4/11 스터디 문제

hyejun sang·2022년 4월 11일
0

알고리즘

목록 보기
17/28
post-thumbnail

1번 문제.
https://www.acmicpc.net/problem/1913
-> 달팽이

1번 문제 풀이 코드

import sys

# nxn 보드를 위해 입력
n = int(sys.stdin.readline())
# 보드 내에서 얻고자 하는 숫자
m = int(sys.stdin.readline())
# nxn 보드판 만들기
board = [[0 for _ in range(n)]for _ in range(n)]

# 방향전환용 
# 상우하좌
dr = [0, 1, 0, -1]
dc = [1, 0, -1, 0]

# 홀수 보드
row = n//2
col = n//2
# 시작 숫자
num = 1
# 이동할 길이
len = 0
# 보드 좌표에서의 숫자
board[row][col] = num

while True:
	# 방향에대한 for문
    for i in range(4):
    	# 한칸씩 이동해서 숫자입력
        for _ in range(len):
            row += dr[i]
            col += dc[i]
            num += 1
            board[row][col] = num
            # 찾을 숫자의 인덱스 저장
            if num == m:
                result = [row+1, col+1]

    if row == 0 and y == 0:
        break
    row -= 1
    col -= 1
    len += 2

for i in range(n):
    print(*board[i])
print(*result)

=======================================================
1491번 나선 문제를 풀다가 이런 문제들이 달팽이 배열이라는 것을 깨달았다.
그래서 달팽이 문제들을 풀어보며 다음에 1491을 풀어보면 좋을 것 같아 1913번 문제를 풀게 되었다. 그러나.. 런타임 에러,,,,? 잘만 나오는데 뭐가 문제인지 ㅋ

0개의 댓글