반응형
https://school.programmers.co.kr/learn/courses/30/lessons/181832
구현 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. 우, 하, 좌, 상의 방향을 위해 dr, dc배열을 선언 후 적절히 초기화합니다.
2. 정답 변수 answer 선언 후 n*n의 2차원 배열을 선언합니다.
3. 값 val선언 후 1로 초기화합니다.
4. 시작행과 열 r, c선언 후 각각 0으로 초기화합니다.
5. 방향 direction을 선언 후 0으로 초기화합니다.
📔 풀이과정
n*n만큼의 for loop를 수행하며 다음을 진행합니다.1. answer의 r행 c열을 val로 저장합니다.
2. val을 1 추가합니다.
3. 현재 방향으로 다음 좌표에 해당하는 행과 열을 nr, nc지역변수를 선언해 저장합니다.
4. nr, nc가 범위를 넘어가거나 answer의 nr행, nc열이 값이 채워져있다면 방향을 바꿔 nr, nc값을 다시 구해 갱신해줍니다.
5. r, c 값을 nr, nc로 갱신합니다.
📔 정답 출력 | 반환
answer를 반환합니다.
📕 Code
📔 Python3
def solution(n):
#우,하,좌,상
dr = [0,1,0,-1]
dc = [1,0,-1,0]
answer = [[0] * n for _ in range(n)]
r, c = 0, 0
direction = 0
for val in range(1, n*n+1):
answer[r][c] = val
val += 1
nr = r + dr[direction]
nc = c + dc[direction]
if 0 > nr or nr >= n or 0 > nc or nc >= n or answer[nr][nc]!=0:
direction = (direction + 1) % 4
nr = r + dr[direction]
nc = c + dc[direction]
r, c = nr, nc
return answer
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > Implementation' 카테고리의 다른 글
(Python3) - LeetCode (Medium) 2257. Count Unguarded Cells in the Grid (0) | 2024.11.21 |
---|---|
(Python3) - 프로그래머스(연습문제): 카드 뭉치 (0) | 2024.11.17 |
(Python3) - 프로그래머스(PCCE 기출문제): 2번 피타고라스의 정리 (1) | 2024.11.13 |
(Python3) - 프로그래머스(PCCP 기출문제): 1번 / 분대 감기 (1) | 2024.11.11 |
(Python3) - 프로그래머스(연습문제): 대충 만든 자판 (0) | 2024.11.10 |