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
- 코딩테스트
- 월간 코드 챌린지 시즌2
- 최빈값
- 최단거리
- 스프링
- 스프링프레임워크
- 정렬
- 동적계획법
- 스택
- 2중포문
- 브루트포스
- 프로그래머스
- 퇴각검색
- Backtracking
- 소트
- 다익스트라
- 그리디
- 소트인사이드
- 코테
- 백트래킹
- sort
- 동적
- 그리디알고리즘
- 백준
- DFS
- 404에러
- 파이썬
- 통계학
- Python
- 덩치
Archives
- Today
- Total
취준생의 코딩테스트 연습기
[프로그래머스] 삼각 달팽이 / 파이썬(python) 본문
# 문제 링크
programmers.co.kr/learn/courses/30/lessons/68645
# Soultion
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
32
33
34
35
|
def solution(n):
answer = []
li = [[0]*n for i in range(n)] # n*n 리스트 생성
x=-1; y=0 # 현재 좌표 저장
num=1; cnt=n
for i in range(n):
if i%3==0:
# 아래 x+1
for i in range(cnt):
x +=1
li[x][y] = num
num+=1
elif i%3==1:
# 오른쪽 y+1
for i in range(cnt):
y+=1
li[x][y] = num
num+=1
else:
# 위로 x-1 y-1
for i in range(cnt):
x-=1; y-=1
li[x][y] = num
num+=1
cnt-=1
for i in li:
for j in i:
if j!=0:
answer.append(j)
return answer
|
cs |
4. 0으로 채워진 n*n크기의 리스트를 초기화해준다.
7. 1부터 시작하기 때문에 num을 1로 초기화해주고 한개씩 증가시켜준다.
for문을 한개 진행할때마다 채워야할 숫자의 개수가 n개에서 1개씩 줄어드므로 cnt를 n으로 초기화
9. 시작점으로부터 아래로 진행할 경우, x축을 1만큼 증가시킨 뒤 숫자를 대입한다.
12. cnt 만큼 숫자를 li에 채워준다.
16. 오른쪽으로 진행할 경우, y축을 1만큼 증가시킨 뒤 숫자를 대입한다.
22. 위로 진행할 경우, x축과 y축을 1씩 감소시킨다.
30. 2중 포문을 이용하여 안에 들어있는 값이 0이 아니면 answer에 해당 숫자를 대입하여 출력
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 배달 / 파이썬(python) - 도전중 (0) | 2021.03.17 |
---|---|
[프로그래머스] 주식가격 / 파이썬(python) (0) | 2021.03.16 |
[프로그래머스] 124 나라의 숫자 / 파이썬(python) (0) | 2021.03.13 |
[프로그래머스] 내적 / 파이썬(python) (0) | 2021.03.10 |
[프로그래머스] 폰켓몬 파이썬(python) (0) | 2021.03.10 |
Comments