728x90
반응형
<문제 링크>
programmers.co.kr/learn/courses/30/lessons/68645
<풀이>
n=5 그림을 보면 [1, 2, 3, 4, 5], [6, 7, 8, 9], [10, 11, 12], [13, 14], [15] 순으로 배열에 값이 들어가는 것을 확인할 수 있습니다.
즉 5번, n번만큼 작동하면 모든 값이 들어갑니다.
회차마다 들어가는 값은 n - 회차입니다. (회차는 배열이기 때문에 0부터 시작)
하나의 둘레는 3회가 필요하기 때문에 회차 % 3을 통해 방향을 구합니다. (우 -> 하 -> 상이라서 3회)
회차 % 3 == 0이면, 아래로 향하고
회차 % 3 == 1이면, 오른쪽으로 향하고
둘 다 아니면 위로 올라갑니다.
이 논리를 통해 2차원 배열를 꽉 채운 후에 sum(arr, [])를 통해 1차원 배열로 변환시킵니다.
<코드>
answer = 삼각형 배열
x, y = 좌표값
num = 대입 숫자
i = 방향값
j = i 방향에 대한 대입 횟수
def solution(n):
answer = [[0 for j in range(1, i+1)] for i in range(1, n+1)] # 삼각형 구조 만들기
x, y = -1, 0 # 좌표 초기화 => 처음 시작은 아래로 내려가기 때문에 x = -1
num = 1
for i in range(n): # 방향
for j in range(i, n): # 좌표 구하기
if i % 3 == 0: # 하
x += 1
elif i % 3 == 1: # 우
y += 1
else: # 상
x -= 1
y -= 1
answer[x][y] = num
num += 1
return sum(answer, [])
728x90
반응형
'~2023' 카테고리의 다른 글
[Git] 매우 기초적인 Git 명령어 모음 (0) | 2021.04.12 |
---|---|
[Git] Git Push 또는 Pull이 안되는 경우 >> (fatal: refusing to merge unrelated histories) (0) | 2021.04.12 |
[ANDROID] CheckBox >> onClickListener() 이벤트 리스너 설정 (0) | 2021.03.30 |
[ANDROID] java 파일에서 터치 이벤트 발생시켜 현재 터치 위치 표시하기 (0) | 2021.03.30 |
[Python] 문자열 압축 - 2020 KAKAO BLIND RECRUITMENT (0) | 2021.03.26 |