내용으로 건너뛰기
테페리넷
사용자 도구
등록
로그인
사이트 도구
검색
도구
문서 보기
Fold/unfold all
역링크
미디어 관리자
사이트맵
등록
로그인
>
미디어 관리자
사이트맵
현재 위치:
테페리넷
»
Problem Solving
»
문제
»
프로그래머스
»
삼각 달팽이
ps:problems:programmers:68645
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== 삼각 달팽이 ===== ===== 풀이 ===== * 그냥 구현 문제 * 삼각형 형태의 2차원 리스트에 채우고 이어 붙이는 방법도 가능하지만, 1차원 리스트에 바로 채우는 방식으로 했다. * 1차원 리스트을 삼각형 모양으로 가정하고 채우려면 조금 번거롭다. 예를 들어, 맨 처음 아래쪽으로 채워 나갈때도, 인덱스가 0, 1, 3, 6, ... 이런식으로 일정하지 않게 증가하게 되기 때문에 현재 행 번호를 구해서 인덱스를 증가시켜야 하니 구현이 번거롭다. * 대신 1차원 리스트를 사각형 모양으로 가정하고, 그 중에 삼각형만큼만 채운 다음, 마지막에 채워진 원소들만 남기고 나머지를 제거하는 방식으로 구현했다. * 이러면 일정하게 아래로 채울때는 인덱스가 n씩 증가, 오른쪽일때는 1씩 증가, (대각선)위쪽일때는 n+1씩 감소한다. ===== 코드 ===== <dkpr py> """Solution code for "Programmers 68645. 삼각 달팽이". - Problem link: https://programmers.co.kr/learn/courses/30/lessons/68645 - Solution link: http://www.teferi.net/ps/problems/programmers/68645 """ def solution(n): step_d, step_r, step_u = n, 1, -(n + 1) next_step = {step_d: step_r, step_r: step_u, step_u: step_d} answer = [0] * (n * n) step = step_d index = 0 answer[index] = 1 for i in range(2, n * (n + 1) // 2 + 1): if index + step >= len(answer) or answer[index + step]: step = next_step[step] index += step answer[index] = i return [x for x in answer if x] </dkpr> {{tag>프로그래머스 ps:problems:programmers:Level_2}}
ps/problems/programmers/68645.txt
· 마지막으로 수정됨: 2021/01/21 16:22 저자
teferi
문서 도구
문서 보기
역링크
Fold/unfold all
맨 위로