728x90
🔗 Problem Link
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
❔Thinking
- 주어진 삼각형을 반시계 방향으로 채워나가는 방법은 다음과 같은 과정의 반복이다.
- 층을 내려가면서, 숫자를 하나씩 늘려 채워나간다.
- 같은 층의 오른쪽으로 끝까지 가면서, 숫자를 하나씩 늘려 채워나간다.
- 층을 올라가면서, 숫자를 하나씩 늘려 채워나간다.
- 위와 같은 방법으로 채워진 삼각형을 각 층의 왼쪽부터 차례대로 리스트에 담아 반환한다.
💻Solution
def solution(n):
answer = []
triangle = [[0 for _ in range(i)] for i in range(1, n+1)]
num = 1
x, y = -1,0
for i in range(n):
for _ in range(i, n):
if i % 3 == 0:
x += 1
elif i % 3 == 1:
y += 1
else:
x -= 1
y -= 1
triangle[x][y] = num
num += 1
for i in triangle:
answer += i
return answer
🗝️keypoint
- 도형 문제를 보다 편리하게 이해하고 풀이하는 방법은, 좌표평면으로 치환하는 것이다.
- '층을 내려가고, 오른쪽 끝까지 이동하고, 층을 올라가는' 과정이 순서대로 총 n번 일어난다. ( = 3으로 나눈 나머지)
- 0,3,6... 번째 -> 내려가기 | 1,4,7... -> 오른쪽 끝까지 이동하기 | 2,5,8... -> 올라가기
- 반복되는 과정에서 값을 변경할 때에는, list를 활용하는것이 편리하다. (문자열은 특정 index 값의 변경이 불가능하다)
'코딩테스트 > Python' 카테고리의 다른 글
[Programmers] Level 2. 큰 수 만들기 (Python) (0) | 2022.10.01 |
---|---|
[Programmers] Level 2. 전화번호 목록 (Python) (0) | 2022.09.30 |
[Programmers] Level 2. 짝지어 제거하기 (0) | 2022.09.29 |
[Programmers] Level 2. 쿼드압축 후 개수 세기 (0) | 2022.09.29 |
[Programmers] Level 2. 2개 이하로 다른 비트 (0) | 2022.09.29 |