[BOJ1913] 달팽이
Updated:
문제
- 홀수인 자연수 N (3<= <=999) 주어짐
- 1부터 N^2 자연수를 N*N 표에 달팽이 패턴으로 넣기 가능
- N이 주어졌을 때, 표 출력하고, N^2이하의 값이 주어졌을 때 좌표 출력
입력
- 첫째 줄에 홀수 자연수 N
- 둘째 줄에 위치를 찾고자 하는 N^2 이하의 자연수
출력
- N개의 줄에 걸쳐 표 출력
- N+1줄에 입력 받은 자연수의 좌표
설계
- 달팽이패턴을 보면, 중앙에서 시작해 방향을 위, 오른쪽, 아래쪽, 왼쪽을 계속해서 전환
- 각 방향에 대해 이동하는 수를 적어보면, 1 1 2 2 3 3 4 4 …
마지막엔 이동하는 수가 3개 (ex. N = 3 : 1 1 2 2 2) - 1부터 시작, 좌표는 (n/2, n/2)
- 패턴에 맞게 반복 :
- cnt는 반복시 계속 1씩 증가하여 n*n 값이 되면 정지
- 달팽이 패턴에 맞게 반복, dir 변수 써서 방향전환하여 좌표 변환
- 배열에 증가하는 cnt 넣어주기
- 마지막엔 2번 반복되는 패턴을 3번으로 마무리
- 주어진 자연수는 해당 좌표 저장 후 출력
피드백
- 패턴을 구현하는 문제는 논리적인 설계가 먼저 필요
- 패턴을 구하고, 세부적인 조건을 따져가며 천천히 설계해보기
- 이번 문제도 티어는 생각보다 안 높았는데 푸는 데 오래걸림…
How I solved(click to github)
ref :
BOJ1913
Leave a comment