문제
홀수인 자연수 N(3≤N≤999)이 주어지면, 다음과 같이 1부터 N2까지의 자연수를
달팽이 모양으로 N*N의 표에 늘어놓을 수 있다.
9 | 2 | 3 |
8 | 1 | 4 |
7 | 6 | 5 |
25 | 10 | 11 | 12 | 13 |
24 | 9 | 2 | 3 | 14 |
23 | 8 | 1 | 4 | 15 |
22 | 7 | 6 | 5 | 16 |
21 | 20 | 19 | 18 | 17 |
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 |