목록개발이야기/PS - Problem Solving, 알고리즘 (43)
준호씨의 블로그
문제 https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 공백(" ) 또는벽(#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 지도 1과 지도 2라고 하자. 지도 1 programmers.co.kr 지도는 정사각형 모양의 2차원 배열로 만들어져 있습니다. 이런..
for loop 에서 index 를 알려면 enumerate for i, x in enumerate([1, 3, 5]): print(i, x) 0 1 1 3 2 5 itertools.permutations 순열. 리스트 각 항목이 중복 되지 않는 모든 경우의 조합 구하기 import itertools for perm in itertools.permutations([1, 2, 3]): print(perm) (1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1) 순열에 대한 자세한 설명은 http://junho85.pe.kr/1025 를 참고 한다.
알고리즘 문제 풀기에서 단골로 나오는 것중 하나가 순열입니. 리스트가 있을 때 서로 겹치지 않게 모든 경우로 표현하는 것입니다. 예들 들어 1과 2가 있으면 다음과 같은 조합을 만들 수 있습니다. 1 2 2 1 만약 1, 2, 3이 있다면 다음과 같은 조합을 만들 수 있겠죠? 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 순열은 factorial 로 경우가 수의 늘어납니다. 1! = 1 2! = 1 x 2 = 2 3! = 1 x 2 x 3 = 6 4! = 1 x 2 x 3 x 4 = 24 순열을 직접 구현 할 수도 있겠지만, 빠르게 해답을 찾으려면 itertools 를 사용할 수 있습니다. (python 만세) import itertools for perm in itertools.per..