[2022.02.22 푼 코드]
n = int(input())
input_num = int(input())
dic = {}
array=[[0 for _ in range(n)] for _ in range(n)]
temp = 1 # 1~N까지의 정수 (표에 들어갈)
x, y = n // 2, n // 2
dic[temp] = (x, y)
array[x][y]=1
# 상,우,하,좌
dx = [-1,0,1,0]
dy = [0, 1, 0, -1]
cnt = 1
for i in range(1, n + 1):
if i==n:
for j in range(i-1):
# 상
temp+=1
x+=dx[0]
y+=dy[0]
dic[temp]=(x,y)
array[x][y]=temp
break
if i % 2 != 0: # 상, 우
for j in range(i):
# 상
temp += 1
x += dx[0]
y += dy[0]
dic[temp] = (x, y)
array[x][y]=temp
for j in range(i):
# 우
temp+=1
x+=dx[1]
y+=dy[1]
dic[temp]=(x,y)
array[x][y]=temp
else: # 하,좌
for j in range(i):
# 하
temp+=1
x+=dx[2]
y+=dy[2]
dic[temp]=(x,y)
array[x][y]=temp
for j in range(i):
# 좌
temp+=1
x+=dx[3]
y+=dy[3]
dic[temp]=(x,y)
array[x][y]=temp
cnt += 1
for i in range(n):
print(*array[i])
print(dic[input_num][0]+1,dic[input_num][1]+1)
# https://www.acmicpc.net/problem/1913
n=int(input())
find_num=int(input())
array=[[None]*n for i in range(n)]
# 상,하,좌,우
dx=[-1,1,0,0]
dy=[0,0,-1,1]
array[n//2][n//2]=1 # 1 위치 잡아주기
x=n//2 # 현재 x좌표
y=n//2 # 현재 y좌표
>> 입력 받는 과정
먼저 1의 값은 위치를 잡아주고 시작했다.
for i in range(1,n+1):
if i%2!=0: #홀수일 경우
if i==n:
for _ in range(i-1):
nx=x+dx[0]
ny=y+dy[0]
array[nx][ny]=array[x][y]+1
x=nx
y=ny
else:
for _ in range(i):
nx=x+dx[0]
ny=y+dy[0]
array[nx][ny]=array[x][y]+1
x=nx
y=ny
for _ in range(i):
nx = nx + dx[3]
ny = ny + dy[3]
array[nx][ny] = array[x][y] + 1
x=nx
y=ny
else: #짝수일경우
for _ in range(i):
nx=x+dx[1]
ny=y+dy[1]
array[nx][ny]=array[x][y]+1
x=nx
y=ny
for _ in range(i):
nx=nx+dx[2]
ny=ny+dy[2]
array[nx][ny]=array[x][y]+1
x=nx
y=ny
x=nx
y=ny
>> i의 값이 n값 (격자크기)와 같아질때까지 for문을 반복한다.
n=3일경우, 이동하는 과정은 총 2번!
n=5일 경우에는 4번이니까
for문은 n-1번 돌아가도록 설정하기
n이 홀수일 경우에는
움직이는 순서가 상 -> 우,
n이 짝수일 경우에는
움직이는 순서가 하->좌
따라서 i의 값이 홀수면 상->우로 움직이고
i의 값이 짝수면 하->좌로 움직인다.
for i in range(n):
for j in range(n):
print(array[i][j],end=' ')
print()
for i in range(n):
for j in range(n):
if array[i][j]==find_num:
print(i+1,j+1)
break
>>
'여니의 취준 준비 > 코딩테스트 (Python)' 카테고리의 다른 글
[Python] n12933번 | 오리 (0) | 2021.05.03 |
---|---|
[Python] n14467 | 소가 길을 건너간 이유 1 (0) | 2021.04.29 |
[Python] n20546 | 기적의 매매법 (0) | 2021.04.27 |
[Python] n5597 | 과제 안 내신 분..? (0) | 2021.04.27 |
[Python] n20053 | 최소, 최대 2 (0) | 2021.04.27 |