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
- 깊이 우선 탐색
- level 3
- Python
- SQL 고득점 KIT
- 프로그래머스
- javascript
- 오블완
- group by
- 파이썬
- 소프티어
- SQL
- Lv. 3
- 동적계획법
- Dynamic Programming
- 너비 우선 탐색
- C언어
- softeer
- 자바스크립트
- Java
- bfs
- Lv. 0
- dfs
- Lv. 1
- 티스토리챌린지
- programmers
- Lv. 2
- select
- LEVEL 2
- DP
- join
Archives
- Today
- Total
몸과 마음이 건전한 SW 개발자
프로그래머스 Lv. 2 삼각 달팽이 Python 본문
문제 링크
https://school.programmers.co.kr/tryouts/72049/challenges
정답 코드
def solution(n):
top = [[0 for _ in range(n)] for _ in range(n)]
number = 1
cnt = n
ifd = [0, 1, 2]
direction = 0
startIndex = 0
endIndex = n
# index 증가, 고정, 감소, 증가, 고정, 감소
while cnt:
cnt -= 1
d = ifd[direction]
if d == 0:
for idx in range(startIndex, endIndex):
top[idx][startIndex] = number
number += 1
startIndex += 1
elif d == 1:
for jdx in range(startIndex, endIndex):
top[endIndex-1][jdx] = number
number += 1
endIndex -= 1
else:
for idx in range(endIndex-1, startIndex-1, -1):
top[idx][endIndex] = number
number += 1
startIndex += 1
direction = (direction + 1) % 3
answer = []
for idx in range(n):
for jdx in range(n):
number = top[idx][jdx]
if number:
answer.append(number)
return answer
풀이 방법
- dp로 풀 수도 있지만 그러려면 조금 더 설계를 해야 하고 오래 생각해야 했기에 While문으로 접근했다.
- 단순하게 왼쪽은 아래로 내려가면서 top 리스트에 넣는다.
- 다 내려가면 startIndex를 + 1
- 다음은 하단, columnIndex를 늘려가면서
느낀점
- 그다지 어렵지는 않았다.
'알고리즘' 카테고리의 다른 글
프로그래머스 Lv. 2 행렬의 곱 Python (0) | 2024.01.03 |
---|---|
프로그래머스 Lv. 2 거리두기 확인하기 Python [반례 포함] (0) | 2024.01.03 |
프로그래머스 Lv. 2 행렬 테두리 회전하기 Python (1) | 2024.01.03 |
프로그래머스 Lv. 2 교점에 별 만들기 Python (0) | 2024.01.03 |
Softeer Level 2 GBC Python (0) | 2024.01.02 |