본문 바로가기

Programming/ACMICPC

ACMICPC 1913 달팽이

문제

홀수인 자연수 N(3≤N≤999)이 주어지면, 다음과 같이 1부터 N2까지의 자연수를 

달팽이 모양으로 N*N의 표에 늘어놓을 수 있다.

923
814
765
2510111213
2492314
2381415
2276516
2120191817

N이 주어졌을 때, 이러한 표를 출력하는 프로그램을 작성하시오. 

또한 N2 이하의 자연수가 하나 주어졌을 때, 그 좌표도 함께 출력하시오. 

예를 들어 N=5인 경우 6의 좌표는 (4,3)이다.

입력

첫째 줄에 홀수인 자연수 N이 주어진다. 

둘째 줄에는 위치를 찾고자 하는 N2 이하의 자연수가 하나 주어진다.

출력

N개의 줄에 걸쳐 표를 출력한다.

각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. 

N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서 출력한다.







1학년 때 많이 풀었던 이차배열 활용하기 문제이다. 이상하게 거의 모든게 C보다 파이썬이 구현하기 더 쉽고 직관적인데, 이차배열만큼은 C가 더 익숙하게 느껴진다. 내가 이중리스트를 잘 못 써서 그럴테지만.


기본적으로 배열의 가운데부터 시작하여    ↑  ↓ ← 순으로 숫자가 증가하되 한 방향으로 갈 때 숫자가 두번당 1씩 증가한다.

 라는 생각으로 짰는데 코드가 생각보다 좀 많이 더러워졌다.

N**2 숫자에서 멈춰야하는데 처음에는 while문이 끝나기전에 숫자가 이를 넘어가 버리기도 하고..

숫자 찾기도 이보다 깔끔하게 할 수 있을것같은데 쩝..


 



'Programming > ACMICPC' 카테고리의 다른 글

ACMICPC 1373 2진수 8진수  (0) 2015.08.18
ACMICPC 1152 단어의 개수  (0) 2015.08.17
ACMICPC 1550 진법 변환  (0) 2015.08.17
ACMICPC 1037 약수  (0) 2015.08.15
ACMICPC 10219 Meats on the Grill  (0) 2015.08.15