[220510]다중 for문
■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을 이용해서 어떻게 구성되어 있는지 확인함.
■3. 오늘의 소감
연습 문제 중 역방향 별찍기에서 다중 for문이 어떻게 구성되는지 포맷을 이해한 뒤에는 나머지 연습문제는 무난히 잘 풀었다.
마지막 For2014문제를 이중 For문으로 만들 때는 결국 학원에서 해결이 안되서 집에 와서 손으로 배열 확인하면서 코드를 작성해서 완성했다.
그리고 연습문제를 풀면서 느낀건데 삼항연산자와 " i%3==나머지 "구문이 생각보다 곳곳에 많이 쓰인다는 점이다.
나도 코드 작성할 때 삼항연산자와 %== 구문을 적재 적소에 사용할 수 있도록 노력해야겠다.