본문 바로가기

알고리즘8

[python]programmers - 메뉴리뉴얼 programmers Level2 2021 KAKAO BLIND RECRUITMENT 메뉴리뉴얼 카카오 코테에서 이 문제를 풀었던 기억이 난다. 그때 문제를 덜 이해해서 정답을 맞추지는 못했었다. [입출력 예] orders course result ["ABCFG", "AC", "CDE", "ACDE", "BCFG", "ACDEH"] [2,3,4] ["AC", "ACDE", "BCFG", "CDE"] ["ABCDE", "AB", "CD", "ADE", "XYZ", "XYZ", "ACD"] [2,3,5] ["ACD", "AD", "ADE", "CD", "XYZ"] ["XYZ", "XWY", "WXA"] [2,3,4] ["WX", "XY"] 이전 코테에서 문제를 풀때 두번째 예시의 정답에 왜 'AB'가 안들어.. 2021. 7. 21.
[python]programmers - 더맵게 프로그래머스 Level2 힙(Heap) 더 맵게 참고 : heapq 모듈 사용법 [파이썬] heapq 모듈 사용법 Engineering Blog by Dale Seo www.daleseo.com 소스 코드 import heapq def solution(scoville, K): h = [] # heap c = 0 # 변환 횟수 카운트 for i in scoville : heapq.heappush(h, i) while True : a = heapq.heappop(h) # 최소값을 pop if(a >= K) : # 최소값이 K보다 크면 나머지 값들도 다 K보다 크다 break elif(len(h) == 0 and a < K) : # 최소값 하나 남았는데 K보다 작으면 -1 반환 return -1 b = hea.. 2021. 7. 20.
[python]재귀 - 하노이의 탑 [참고 블로그] shoark7.github.io/programming/algorithm/tower-of-hanoi '하노이의 탑' 이해하기 '하노이의 탑' 문제를 이해하고 문제 해결을 위한 핵심 통찰을 살핀 뒤 코드로 작성합니다. 이후 탑의 개수에 따른 총 이동 횟수를 구하는 일반항까지 수학적으로 유도합니다. shoark7.github.io [코드] # 하노이의 탑 경로출력 - 출처 : https://shoark7.github.io/programming/algorithm/tower-of-hanoi MSG_FORMAT = "{}: {} -> {}" def move(N, start, to): print(MSG_FORMAT.format(N, start, to)) def hanoi(N, start, to, vi.. 2021. 4. 24.
[python] dijkstra 알고리즘 dijkstra(다익스트라) 알고리즘은 source node로 부터 모든 node까지의 최단거리를 구하는 알고리즘이다. 먼저 다른 블로그에서 코드를 보고, 출력을 해보며 작동원리를 이해해보았다. 다익스트라 알고리즘을 구현하기전에 먼저 heapq에 대해 공부해야 했다. heapq는 우선순위큐 를 구현하기 위해 쓰이는 모듈이다. 따로 설치할 필요없이 import heapq 하면 된다. [heapq] 완전 이진 트리 형태 부모 노드 키값이 자식 노드 키값보다 항상 작다(최소힙) 키값의 대소관계는 부모/자식 관계에서만 성립하고, 자식끼리의 대소관계는 없다 heapq 예시 import heapq q = [] heapq.heappush(q, [2, 'D']) heapq.heappush(q, [8, 'B']) hea.. 2021. 3. 22.
[python]programmers-소수찾기 programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr level2, 완전탐색 카테고리에 해당하는 문제이다. 문제를 풀기위한 단계 1. 주어진 수로 만들 수 있는 모든 수의 순열을 구한다 2. 순열을 차례로 검사하여 소수인지 판단한다 1번부터 어떻게 해야할지 막막했다. 검색을 해보니 python에서 순열을 만들어주는 함수가 있었다. from itertools import permutations numbers = '7.. 2021. 2. 26.
[python]programmers-방금그곡 2017 KAKAO BLIND RECRUITMENT 문제 : 방금그곡 원래의 노래가사를 재생된 시간만큼 늘려야한다. #이 붙은 것은 #을 제거해야한다.(C#을 1개로 봐야함) 내 코드 def removeS(s) : new_s = '' for i in range(len(s)-1) : if(s[i+1] == '#') : new_s += s[i].lower() elif(s[i] == '#') : continue else : new_s += s[i] if(s[-1] != '#') : new_s += s[-1] return new_s def solution(m, musicinfos): title = [] new_m = removeS(m) print('new m : ', new_m) for i in range(le.. 2020. 11. 30.