[Programmers] Level 2. 삼각 달팽이 (Python)

2022. 9. 30. 17:13·코딩테스트/Python
728x90
반응형

🔗 Problem Link 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


❔Thinking

  • 주어진 삼각형을 반시계 방향으로 채워나가는 방법은 다음과 같은 과정의 반복이다.
    1. 층을 내려가면서, 숫자를 하나씩 늘려 채워나간다.
    2. 같은 층의 오른쪽으로 끝까지 가면서, 숫자를 하나씩 늘려 채워나간다.
    3. 층을 올라가면서, 숫자를 하나씩 늘려 채워나간다.
  • 위와 같은 방법으로 채워진 삼각형을 각 층의 왼쪽부터 차례대로 리스트에 담아 반환한다.

💻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

  1. 도형 문제를 보다 편리하게 이해하고 풀이하는 방법은, 좌표평면으로 치환하는 것이다.
  2. '층을 내려가고, 오른쪽 끝까지 이동하고, 층을 올라가는'  과정이 순서대로 총 n번 일어난다. ( = 3으로 나눈 나머지)
  3. 0,3,6... 번째 -> 내려가기  |  1,4,7... -> 오른쪽 끝까지 이동하기  |  2,5,8... -> 올라가기 
  4. 반복되는 과정에서 값을 변경할 때에는, 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
'코딩테스트/Python' 카테고리의 다른 글
  • [Programmers] Level 2. 큰 수 만들기 (Python)
  • [Programmers] Level 2. 전화번호 목록 (Python)
  • [Programmers] Level 2. 짝지어 제거하기
  • [Programmers] Level 2. 쿼드압축 후 개수 세기
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • ML_DL (39)
        • MUJAKJUNG (무작정 시리즈) (18)
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[Programmers] Level 2. 삼각 달팽이 (Python)
상단으로

티스토리툴바