코드 그라데이션

Day11. 달팽이 배열 문제 혼동 개념 복기 본문

Java/Mega

Day11. 달팽이 배열 문제 혼동 개념 복기

완벽한 장면 2023. 4. 2. 00:00

 

이 모양이 나오도록 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가 되잖아.

뭐 그런 느낌...

 

 

 

 

728x90
Comments