읽기 전
- 불필요한 코드나 잘못 작성된 내용에 대한 지적은 언제나 환영합니다.
- 개인적으로 배운 점을 정리한 글입니다.
문제 링크
문제 풀이
뭔가 겁나 우아한 알고리즘이 있을 줄 알았는데 그냥 삼각형의 각 행의 길이가 1,2,3,…식으로 증가하고 각 방향으로 움직이는 수도 n-1, n-2, ...
로 줄어든다는 규칙을 참고해 2차원 배열을 선언한 뒤 좌표를 이동시켜서 구현하는 문제였다. 난이도가 쉬워서 너무 짧은 풀이만 고려한 게 패착이었다.
- 원소를 입력할 직각 삼각형 형태의 2차원 배열을 생성한다.
- 커서를 이동시킬 방향을 설정한다. 아래, 오른쪽, 좌상향 대각선 방향이다.
- n부터 1까지의 값만큼 이동하되 방향을 정해서 2차월 배열의 값을 갱신한다.
- 마지막까지 순회를 완료하면 2차원 배열의 원소를 하나의 배열에 저장해 리턴한다.
python 코드
def solution(n): board = [] for i in range(1, n + 1): board.append([0] * i) direc = [(1, 0), (0, 1), (-1, -1)] c = [-1, 0] d = 0 s = 0 for i in range(n, 0, -1): for _ in range(i): c[0] += direc[d % 3][0] c[1] += direc[d % 3][1] s += 1 board[c[0]][c[1]] = s d += 1 answer = [] for b in board: for x in b: answer.append(x) return answer
'Algorithms > Programmers' 카테고리의 다른 글
Programmers. 약수의 개수와 덧셈 (0) | 2021.09.09 |
---|---|
Programmers. 스타 수열 (0) | 2021.09.09 |
Programmers. 쿠키구입 (0) | 2021.09.06 |
Programmers. 지형편집 (0) | 2021.09.06 |
Programmers. 사칙연산 (0) | 2021.09.06 |