반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- MongoDB
- 금고털이 파이썬
- 피아노체조 파이썬
- 백준 등수매기기
- express
- 백준 전쟁-전투
- express mongodb
- 등수매기기 파이썬
- 장애물인식프로그램 파이썬
- CRUD
- 백준 평범한배낭
- 백준 피아노체조
- 백준 전쟁 파이썬
- 백준 바이러스
- MySQL완전삭제
- 소프티어 지도자동구축
- 백준 A->B
- 백준 점프
- 소프티어 장애물인식프로그램
- 프로그래머스
- 파이썬데이터분석라이브러리
- 1987파이썬
- 도커 컨테이너
- 파이썬 평범한배낭
- 백준 예산
- jenkins
- 백준알파벳파이썬
- 지도자동구축 파이썬
- 백준
- 백준 점프 파이썬
Archives
- Today
- Total
바위 뚫는중
[프로그래머스] Lv0. 정수를 나선형으로 배치하기 Python 본문
반응형
문제 설명
양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ n ≤ 30
입출력 예
n result
4 | [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]] |
5 | [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]] |
입출력 예 설명
입출력 예 #1
- 예제 1번의 n의 값은 4로 4 × 4 배열에 다음과 같이 1부터 16까지 숫자를 채울 수 있습니다.행 \ 열 0 1 2 3
0 1 2 3 4 1 12 13 14 5 2 11 16 15 6 3 10 9 8 7
입출력 예 #2
- 예제 2번의 n의 값은 5로 5 × 5 배열에 다음과 같이 1부터 25까지 숫자를 채울 수 있습니다.행 \ 열 0 1 2 3 4
0 1 2 3 4 5 1 16 17 18 19 6 2 15 24 25 20 7 3 14 23 22 21 8 4 13 12 11 10 9
풀이
음 대박이다 Lv.0 이라그러길래 엄청 간단한 문제일 줄 알았더니 전혀 아니었다 ㅎ
나선형 방향 : 우 하 좌 상 으로 이동한다
#우 하 좌 상 순
dx = [1,0,-1,0]
dy = [0,1,0,-1]
x, y = 0,0
dir = 0
방향좌표, 처음좌표, dir은 방향좌표의 인덱스이다! 즉 나선형으로 움직이기위해선 dir의 숫자가 0~3으로 변경되면 된다 (이렇게 범위가 3이면 4로 나눠준 나머지로 0,1,2,3, 차례로 하면 편함)
def solution(n):
answer = [[0] * n for i in range(n)]
# 우 하 좌 상
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
dir = 0
x, y = 0,0 #시작 좌표
for i in range(1, (n*n)+1):
answer[y][x] = i
nx = x + dx[dir] #다음좌표
ny = y + dy[dir] #다음좌표
#다음좌표가 벽에걸리거나 숫자가 차있거나 등등이면
if nx<0 or ny<0 or nx>=n or ny>=n or answer[ny][nx] != 0:
dir = (dir+1)%4 #0,1,2,3 순서 우하좌상 순서
nx = x + dx[dir]
ny = y + dy[dir]
#바뀐 방향으로 다음좌표 재설정
#바뀐좌표로 다시 반복
x = nx
y = ny
return answer
반응형
'Algorithms > 프로그래머스' 카테고리의 다른 글
[MySQL] 프로그래머스 SQL 고득점 Kit - Group By 16문제 풀이 (0) | 2023.10.01 |
---|---|
[MySQL] 프로그래머스 SQL 고득점 Kit - IS NULL 5문제 풀이 (0) | 2023.09.29 |
[프로그래머스] Lv1. 실패율 Python - 정렬 (0) | 2023.09.29 |
[프로그래머스] Lv2. 카펫, 완전탐색 (0) | 2023.09.23 |
[프로그래머스] Lv2. 점프와 순간 이동 (0) | 2023.09.09 |