2026/07/08 3

스파이럴(달팽이) 배열 구현하기 - 경계값(Boundary) 방식

이번엔 스파이럴 배열 문제의 "정석" 풀이로 통하는 경계값 방식을 정리한다. 코딩테스트에서 스파이럴/나선 행렬 문제가 나오면 가장 먼저 떠올려야 하는 접근이다. 방식 설명핵심 아이디어는 앞선 두 방식과 또 다르다. 배열 값이 채워졌는지(0인지) 보는 대신, 네 방향의 한계선(top, bottom, left, right)을 숫자로 직접 관리한다. 한 방향을 채우면 그 방향의 경계선을 안쪽으로 한칸 좁힌다.switch 방식이 "배열 값이 0인지"로 다음 칸을 판단했다면, 이 방식은 배열 값을 전혀 들여다보지 않고 오직 숫자 네 개(top, bottom, left, right)만으로 어디까지 채웠는지 판단한다. 그래서 한 바퀴가 끝날 때마다 ++top, --right, --bottom, ++left로 테두리가..

공부 2026.07.08

스파이럴(달팽이) 배열 구현하기 - 대칭 축소(nLength) 방식

앞서 설명한 문제의 교재 답지에 있던 방식이다.문제 정의5x5 정수 배열을 아래처럼 시계방향 나선형으로 1부터 25까지 채우는 게 목표다.1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9방식 설명핵심 아이디어는 한 바퀴를 위쪽/오른쪽 + 아래쪽/왼쪽 두 구간으로 쪼개서, 같은 부호(nDirecton)로 x와 y를 순서대로 움직인다. 한라운드가 끝나면 부호를 뒤집고, 다음 루프는 테두리 한 칸 안쪽(nLength -= 2)에서 반복한다. nLength는5x5배열 기준 9에서 시작해 2씩 줄어들며 9,7,5,3,1, 다섯 라운드를 수행한다.안쪽 for문은 매 바퀴 nLength를 반복하는데, 앞쪽..

공부 2026.07.08

스파이럴(달팽이) 배열 구현하기 - switch/case 방향 전환 방식

C로 5x5 스파이럴 배열을 채우는 문제를 여러 방식으로 구현해보면서, 각 방식의 원리와 장단점을 정리해본다. 첫 번째로 다룰 방식은 switch문으로 방향을 관리하는 방식이다.(처음 문제를 보고 내가 푼 방식이라 많이 와일드 하다. 나머지 3개는 교재참고, 다른 자료를 참고한 방식이다.)문제 정의5x5 정수 배열을 아래처럼 시계방향 나선형으로 1부터 25까지 채우는 게 목표다.1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9 방식 설명핵심 아이디어는 간단하다. 한 방향으로 갈 수 있는 데까지 가고, 막히면(이미 채워진 칸을 만나면) 다음 방향으로 90도 회전한다.방향은 4가지뿐이므로 enu으..

공부 2026.07.08