Java 실습

[220510]다중 for문

ss__0 2022. 5. 10. 23:13

■1. 목표달성  
    :::: 이중FOR를 이용하여 ★을 출력할수 있다. ( 1단계->2단계-> 3단계) 줄일수 있는지 확인 (있다)
   ★★★★
   ★★★★
   ★★★★
   ★★★★

[목표달성] 실제로 단계 별로 작성한 후 출력

■2. 트러블슈팅

2-1). 역방향으로 별 찍기 문제

(1) 문제 정의 

                    원하는 출력구문       ---->     실제 출력된 구문

                       ★★★★                                ★

                       ★★★                                     ★★

                       ★★                                        ★★★

                       ★                                            ★★★★

(2)원인 규명 및 수정

//처음에 잘못 작성했던 코드
String result = ""; 
 for (int row = 1; row <= 1; row++) { 
 	for (int hang = 1;hang <= 4; hang++) { 
     result += "★"; 
     System.out.println(result); 
     }
 	System.out.println(); 
 }

역방향 별찍기 문제 이전에 정방향 별찍기 문제를 해결했어서 그 코드를 역으로 바꾸면 역방향으로 별이 찍힐 것이라고 생각했다. 그래서 Ver_0(구현할 코드 눈에 보이는 대로 작성)의 과정을 거치지 않고 코드를 작성했다.  당연하게도 코드가 엉망진창으로 나왔다. 정상적으로 구현되지 않았다.

처음 Ver_0(구현할 코드 눈에 보이는 대로 작성)으로 돌아와서 반복구문을 다시 표현했다.

다중 for문이 어떻게 구성되있는지 한 눈에 보이지 않는다면 꼭! Ver_0을 통해서 코드를 작성해보자!!!

재구현한 코드 출력

2-2). 구삼단 이중구문으로 줄여보기

(1) 문제 정의

구삼단 num*(1~3)을 삼중 for문으로 만들었는데 그 문제의 업그레이드 문제로 이중 for문으로 만들기.

이중 for문은 삼중 for문과 달리 Ver0~Ver2을 거친다고 어떻게 코드를 작성해야겠다는 실마리가 잡히지 않았다.

 

(2) 원인 규명 및 수정

출력 구문에서 9줄 * 3행의 행렬로 구성되었음을 확인.

for으로 col과 row로 1~3, 1~9로 총 27칸의 공간을 만들었다.

2*1=2, 2*2=4 을 [kan]*[dan]=[kan*dan]의 형태로 반복되는 구문을 작성.

int kan과 int dan을 변수 설정하고 초기화한 후, 밑에 수기로 작성한 것처럼 kan과 dan의 코드를 설정했다. 

kan과 dan의 코드를 만들 때는 Ver_0을 이용해서 어떻게 구성되어 있는지 확인함.

이중 for문으로 구현한 구삼단

■3. 오늘의 소감

연습 문제 중 역방향 별찍기에서 다중 for문이 어떻게 구성되는지 포맷을 이해한 뒤에는 나머지 연습문제는 무난히 잘 풀었다.

마지막 For2014문제를 이중 For문으로 만들 때는 결국 학원에서 해결이 안되서 집에 와서 손으로 배열 확인하면서 코드를 작성해서 완성했다.   

그리고 연습문제를 풀면서 느낀건데 삼항연산자와 " i%3==나머지 "구문이 생각보다 곳곳에 많이 쓰인다는 점이다.

나도 코드 작성할 때 삼항연산자와 %== 구문을 적재 적소에 사용할 수 있도록 노력해야겠다.