티스토리 뷰
반응형
프로그래머스 문제명: 삼각 달팽이
문제
📝 문제 설명
정수 n이 주어졌을 때, 높이와 밑변이 n인 정삼각형 형태의 2차원 배열을 생각합니다.
맨 위 꼭짓점에서 시작하여 반시계 방향으로 달팽이 채우기를 진행합니다.
달팽이 채우기 순서는 다음과 같습니다:
- 아래 방향 ↓
- 오른쪽 방향 →
- 왼쪽 위 대각선 ↖
(이 순서를 반복)
그리고 이 삼각형 모양 배열을 한 줄 배열로 평탄화(flatten)하여 반환합니다.
테스트케이스
문제 작동 원리
삼각형의 모양은 다음과 같이 row마다 column 개수가 다릅니다.
예를 들어 n = 4일 때:
row 0 → 1칸
row 1 → 2칸
row 2 → 3칸
row 3 → 4칸
총 칸 수 = 1 + 2 + 3 + ... + n = \( \frac{n(n+1)}{2} \)
→ 각 칸에 1부터 시작해서 순서대로 채우면 됩니다.
이때 방향은 ↓ → ↖를 반복합니다.
아이디어
📌 배열 초기화
삼각형 구조를 위해 row마다 길이가 다른 2차원 배열을 생성합니다:
ans = [[0 for j in range(i)] for i in range(1, n+1)]
📌 방향 제어 변수 k
- k == 0: 아래로 이동 (row += 1)
- k == 1: 오른쪽으로 이동 (col += 1)
- k == 2: 왼쪽 위 대각선 이동 (row -= 1, col -= 1)
- → 이후
k = (k+1) % 3
로 순환
📌 반복 구조
- 가장 바깥쪽 반복문은
i = n, n-1, ..., 1
(총 n번) - 각 방향마다
i
개의 칸을 채움
📌 마지막에 결과 추출
- 이중 리스트(ans)를 순서대로 1차원 배열로 합칩니다
전체 코드
def solution(n):
answer = []
ans = [[0 for j in range(i)] for i in range(1, n + 1)]
k = 0
row = 0
col = 0
x = 1
for i in range(n, 0, -1):
for j in range(i):
ans[row][col] = x
x += 1
if j == i - 1:
break
if k == 0:
row += 1
elif k == 1:
col += 1
elif k == 2:
row -= 1
col -= 1
if k == 0:
col += 1
elif k == 1:
row -= 1
col -= 1
elif k == 2:
row += 1
k = (k + 1) % 3
for an in ans:
for i in an:
answer.append(i)
return answer
결론
- n 크기의 삼각형을 만들고, 반시계 방향으로 달팽이 채우기를 진행합니다.
- 이동 방향은 ↓ → ↖ 순서로 반복하며, 각 루프마다 길이를 하나씩 줄여가며 채웁니다.
- 방향 전환 시 좌표를 미세 조정하는 로직이 핵심입니다.
- 최종적으로 삼각형 모양의 리스트를 평탄화하여 반환합니다.
반응형
'백준 스터디 > 프로그래머스' 카테고리의 다른 글
프로그래머스 테이블 해시 함수 Python (0) | 2025.09.24 |
---|---|
"프로그래머스 '시소 짝꿍' python (0) | 2025.09.21 |
프로그래머스 디펜스 게임 python (1) | 2025.09.19 |
프로그래머스 '귤 고르기' Python (0) | 2025.09.16 |
프로그래머스 숫자 변환하기 Python (0) | 2025.09.15 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 알고리즘
- 문자열처리
- 프로그래밍
- 객체지향
- C++
- 문제 풀이
- 알고리즘문제풀이
- c언어
- 동적계획법
- c++알고리즘
- 코딩테스트
- 파이썬코딩
- 알고리즘기초
- 동적 계획법
- 코딩 테스트
- 문제풀이
- python 알고리즘
- 브루트포스
- 그래프 탐색
- 인접 행렬
- Python
- 그리디
- DP
- 백준
- 코딩
- 그리디알고리즘
- C++ 알고리즘
- dfs
- 파이썬
- 알고리즘 문제풀이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
반응형