[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