코드 그라데이션
Day11. 달팽이 배열 문제 혼동 개념 복기 본문
이 모양이 나오도록 2차원 배열 활용하기
풀이 IDEA
* 열이 증가하고 -> 행이 증가하고 / 또는, 열이 감소하고 -> 행이 감소하고 ... => 이 논리가 한 세트가 될 수 있다.
* 이 두 개가 하나의 쌍으로 동작한다.
* 한 번 반복 할 때마다 방향이 바뀌어야 한다.
** 방향 바꾸는 가장 간편한 방법이 switch를 이용하는 것!
(변수 선언해서 활용하는 방법이겠지.)
*** 이 sw는 부호를 바꾸는 역할만 수행하면 된다.
즉 열이 증가하고 -> 행이 증가하고 // 스위치 // 열이 감소하고 -> 행이 감소하고
이 로직.
반복 횟수를 나타내는 변수 k도 선언해서,
k--;를 반복이 끝날 때마다 해주고,
k==0 이 되면 break.
그런데 이 세트가 왜 가운데에 있는가?
열과 행이 하나의 세트인데, 그럼 행까지 끝나고 하면 되는 거 아니야??
=> 돌려보면, 마지막엔 필연적으로 행 증가 한 번만 남는다!
즉, 마지막인 경우를 고려하여...
열을 나타내는 int c 가 -1로 초기화된 이유는
정확한 반복문 시작을 위해서(어찌보면 끼워맞춘 코딩이라 할 수 있음.)
최초 위치의 c를 쓰기 전에, c를 sw에 1을 더한 상태로 시작을 하고 있음.
따라서 c의 시작이 -1 이어야 이 반복문이 제대로 돌아갈 수 있게 되는 것.
만약 c가 0이었으면 조건문이 따로 들어가야하니까.
그럼, 왜 행은 0으로 초기화했냐?
애초에 행은 시작 자체가 1이다.
예를 들어, 1 2 3 4 5 다음에 6 7 8 9 갈 때,
1 2 3 4 5가 끝나고 한 칸이 이동한 상태에서 6 7 8 9가 되잖아.
뭐 그런 느낌...
'Java > Mega' 카테고리의 다른 글
Day12 Quiz02 계산기 만들기 예제 추가적인 내용 부연 (0) | 2023.04.02 |
---|---|
230331 3주차 수업 내용 복기 (1) 리턴값과 파라미터 (0) | 2023.04.02 |
Day09 선택정렬 예제 경우의 수 따지기 (0) | 2023.04.01 |
Day13. Call by Value와 Call by Reference (0) | 2023.03.31 |
함수의 실행 흐름 - 선입후출 구조 (0) | 2023.03.30 |