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
- GPT
- Programmers
- ChatGPT
- LeetCode
- 코테
- 프로그래머스
- 프롬프트
- attention
- 부스트캠프
- Django
- 파이썬
- 기계학습
- Python
- gradient descent
- Deeplearning
- LLM
- deque
- rnn
- 머신러닝
- 일기
- transformer
- dl
- machinelearning
- 코딩테스트
- Linear Regression
- NLP
- 알고리즘
- BFS
- Linear Model
- prompt engineering
Archives
- Today
- Total
크크루쿠쿠
[프로그래머스] 삼각 달팽이 파이썬 본문
https://programmers.co.kr/learn/courses/30/lessons/68645
문제 설명
정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.
문제풀이
진행하는 방향이 3가지임.
아래,오른쪽,위
방향 진행 횟수 총합 -> n번 : 이 개념을 알아야 풀 수 있는듯.
(ex: n=4 일때 아래,오른쪽,위,아래 ->4번)
배열로 짜야하기 때문에 왼쪽으로 밀어서 보기.
방향이 진행될수록 n,n-1 .... 1번 진행된다.
코드
from itertools import chain
def solution(n):
#1,2,3,4...n 개로 늘어감
snail=[[0 for _ in range(i+1)] for i in range(n)]
#처음 위에서 아래니까 y=-1
x,y=0,-1
#입력할 숫자
num=1
#방향 n번
for direct in range(n):
for tri in range(direct,n):
#아래
if direct%3==0:
y+=1
#오른쪽
elif direct %3 ==1:
x+=1
#위
else:
x-=1
y-=1
snail[y][x]=num
num+=1
#배열 붙이기
return list(chain(*snail))
(chain 한번 documents 확인해보기. https://docs.python.org/ko/3.8/library/itertools.html#itertools.chain )
번외편 (역삼각형)
거꾸로 해보는 역삼각달팽이 재미삼아 해봤음.
from itertools import chain
def solution(n):
snail=[[0 for _ in range(i,n)] for i in range(n)]
x,y=n,-1
num=1
for direct in range(n):
for tri in range(direct,n):
if direct%3==0:
y+=1
x-=1
elif direct %3 ==1:
y-=1
else:
x+=1
snail[y][x]=num
num+=1
return list(chain(*snail))
'알고리즘' 카테고리의 다른 글
[프로그래머스] 배달 파이썬 (0) | 2021.06.29 |
---|---|
[프로그래머스] 행렬 테두리 회전하기 파이썬 (0) | 2021.06.23 |
[Leetcode] 49. Group Anagrams (0) | 2021.06.12 |
[프로그래머스] 후보키 파이썬 (2019 KAKAO BLIND RECRUITMENT) (0) | 2021.05.29 |
[Leetcode] Two Sum 파이썬 (0) | 2021.05.21 |
Comments