반응형
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
- 리트코드
- 파이썬
- 프로그래머스
- 웹프로그래밍
- VUE
- 백준
- sql
- dp
- C++
- 배열
- web
- react
- python
- typescript
- 리액트
- 동적계획법
- Doitvue.js입문
- Level3
- 고득점Kit
- OS
- Level1
- Level2
- 자바스크립트
- 카카오
- javascript
- LeetCode
- CS
- Medium
- 프로그래밍
- 코테연습
Archives
- Today
- Total
[프로그래머스] 삼각 달팽이 - python 본문
반응형
삼각 달팽이
문제 설명
정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 1,000 이하입니다.
풀이
숫자가 채워지는 방향을 보면 아래, 오른쪽, 왼쪽대각선으로 반복되는 것을 알 수 있다. 채워지는 숫자의 개수는 n, n-1, n-2, n-3 ,... 으로 1일때까지 줄어든다.
n*n 2차원 배열을 만들어서 방향을 아래, 오른쪽, 왼쪽 대각선으로 바꿔가면서 채워준다.
현재 시점의 방향을 나타내는 i로 for문을 돌리면서 i부터 n까지로 이중 for문을 돌려준다. 채워야하는 숫자가 n , n -1, n -2, ....,1개로 줄어들기 때문이다.
n =4를 예로 보면
i = 0)
아래 방향으로 4개의 숫자가 채워진다.
i =1)
오른쪽 방향으로 3개의 숫자가 채워진다.
i = 2)
왼쪽 대각선 방향으로 2개의 숫자가 채워진다.
i = 3 = 0 )
아래로 1개의 숫자가 채워진다.
완성된 2차원 배열에서 0이 아닌 수만 골라서 순서대로 answer에 담으면 된다.
def solution(n):
board = [[0] * n for _ in range(n)]
answer = []
x, y, num = -1, 0, 1
for i in range(n):
for _ in range(i, n):
if i % 3 == 0:
x += 1
elif i % 3 == 1:
y += 1
elif i % 3 == 2:
x -= 1
y -= 1
board[x][y] = num
num += 1
for i in range(n):
for j in range(n):
if board[i][j] != 0:
answer.append(board[i][j])
return answer
반응형
'코테 문제 풀이' 카테고리의 다른 글
[프로그래머스] 교점에 별 만들기 - python (0) | 2022.04.27 |
---|---|
[프로그래머스] 점프와 순간 이동 - python (0) | 2022.04.27 |
[프로그래머스] n^2 배열 자르기 - python (0) | 2022.04.26 |
[프로그래머스] 가장 큰 정사각형 찾기 - python (0) | 2022.04.26 |
[프로그래머스] 행렬의 곱셈 - python (0) | 2022.04.26 |
Comments