프로그래머스 lv0 - 정수를 나선형으로 배치하기
2023. 7. 2. 18:05ㆍIT
문제 설명
양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.

def solution(n):
answer = [[None for j in range(n)] for i in range(n)]
move = [[0, 1], [1, 0], [0, -1], [-1, 0]]
x, y, m = 0, 0, 0
for i in range(1, n**2 + 1):
answer[y][x] = i
if y + move[m][0] >= n or x + move[m][1] >= n or answer[y + move[m][0]][x + move[m][1]]:
m = (m + 1) % len(move)
y, x = y + move[m][0], x + move[m][1]
return answer
열, 행 밖으로 나가거나 가려는 길에 이미 숫자가 있을 때 돌려주는 게 훨씬 구현이 간단하다.
나선형 문제는 나올 때마다 시간이 너무 오래 걸리는데 기억!
'IT' 카테고리의 다른 글
프로그래머스 lv0 - 특별한 이차원 배열 1 (0) | 2023.07.02 |
---|---|
프로그래머스 lv0 - l로 만들기 (0) | 2023.07.02 |
프로그래머스 lv0 - 배열의 원소 삭제하기 (0) | 2023.07.02 |
프로그래머스 lv0 - 문자열 정수의 합 (0) | 2023.07.02 |
프로그래머스 lv0 - 전국 대회 선발 고사 (0) | 2023.07.02 |