티스토리 뷰
반응형
🚀 들어가며...
- '레벨 2'의 문제입니다.
🔗 문제
https://programmers.co.kr/learn/courses/30/lessons/68645
📑 내용
[ 문제 설명 ]
정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.
[ 제한 조건 ]
- n은 1 이상 1,000 이하입니다.
[ 입출력 예 ]
n | result |
4 | [1,2,9,3,10,8,4,5,6,7] |
5 | [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] |
6 | [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] |
🔗 풀이
- 삼각 달팽이를 저장할 res와 res의 인덱스에 접근하기위한 x, y값을 각각 -1, 0 (x = -1, y = 0) 으로 초기화 시켜줍니다.
x를 -1로 초기화시켜주는 이유는 이후 이중 for문 사용 시 초기에 x값을 0으로 시작할수 있도록 하기 위함이며,
소스를 보시면 이해하실수 있으실겁니다. - res에 저장할 수 num을 선언 및 초기화 합니다.
- 예를 들어 n이 4라고 한다면, 이중 for문으로 한변을 지날때마다 4개 -> 3개 -> 2개 -> 1개로 저장할 수가 적어지니
0~n 까지, i~n 까지의 이중 for문을 작성합니다. - i 를 %연산자를 이용하여 3단계로 구분하여,
i % 3 == 0이면 down
i % 3 == 1이면 right
i % 3 == 2이면 up - 알맞은 인덱스에 num을 1씩 늘리며 저장하면 res에 삼각 달팽이가 저장됩니다.
- 이중 for문으로 answer에 기존의 2차원 리스트를 하나로 합쳐주면 끝 입니다.
💌 소스코드
def solution(n):
res = [[0] * n for _ in range(n)] # 모두 0으로 개수만큼 세팅
answer = []
x, y = -1, 0 # for문 실행시 x값을 처음에 0으로 세팅해주기 위해 초기값은 -1로 세팅
num = 1 # 들어갈 숫자
for i in range(n):
for j in range(i, n):
# down
if i % 3 == 0: # 3으로 퍼센트연산해준 이유는 down/right/up 세 동작이기 때문
x += 1
# right
elif i % 3 == 1:
y += 1
# up
elif i % 3 == 2:
x -= 1
y -= 1
res[x][y] = num # res에 저장
num += 1
for i in res:
for j in i:
if j != 0:
answer.append(j) # 저장했던 배열 for문이용 합쳐줍니다.
return answer
🙋🏻♂️ 후기
문제의 내용자체는 적은편이었으나 레벨2 난이도답게 구현난이도가 높았다고 생각합니다.
풀이의 핵심은 글자에 노란색 배경을 넣은 부분, 즉 초기화 및 이중포문 이용, %연산자를 이용하여 3단계로 구분하는 부분이며 위 문제 풀이시에는 손으로 그림을 그려가면서 푸시면 좀 더 구현방법이 쉽게 떠오르실 것이라고 생각듭니다
반응형
'Algorithm' 카테고리의 다른 글
[python][프로그래머스] 문자열압축 (0) | 2022.07.04 |
---|---|
[python][프로그래머스] 구명보트 (0) | 2022.06.28 |
[python][프로그래머스] 124 나라의 숫자 (0) | 2022.06.14 |
[python][프로그래머스] 행렬테두리 회전하기 (2) | 2022.06.12 |
[python][프로그래머스] 로또의 최고순위와 최저순위 (0) | 2022.06.08 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- MVT
- Algorithm
- programmers
- list
- Master & Slave
- data formatting
- ORM
- SQL
- JavaScript
- JS
- react
- lv2
- Python
- Named export
- Default export
- Greedy Algorithm
- PostgreSQL
- django ORM
- Linux
- This
- db
- static files
- docker
- union-find
- generator expression
- 탐욕법
- lv1
- uSWGI
- container
- django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함