Algorithm 27

[프로그래머스] 입국 심사 (Python, 이분탐색)

풀이이분 탐색 문제이다.한 번 정리해두면 형식은 똑같을거 같아서 한 번 풀어봤다. 최솟값 최댓값을 주어지는 자료의 범위에 맞게 설정하고,중간 값을 기준으로 나올 수 있는 해가 큰 지 작은지 여부를 확인하고,작다면 왼쪽의 절반, 크다면 오른쪽에 절반에 대해 동일한 과정을 계속 반복한다.코드def solution(n, times): left = 1 right = max(times)*n answer = 0 while left=n: break # 값이 크다면 왼쪽 절반을 탐색 if checked >= n: answer = mid right = mid -1 # 값이 작..

Algorithm 2024.11.08

[프로그래머스] 의상 (Python, 해시)

의상 풀이얼굴, 상의, 하의, 겉옷에 해당되는 옷의 종류가 주어진다. 옷을 입을 수 있는 모든 조합의 수를 구하면 된다. 한  부위에만 옷을 입을수 있다. A의 종류가 N개, B의 종류가 M개 일 때 가능한 모든 경우의 수는 (N+1)(M+1)로 구할 수 있다. 코드from collections import defaultdictdef solution(clothes): my_clothes = defaultdict(int) for cloth in clothes: kind, place = cloth my_clothes[place] += 1 answer = 1 for num in my_clothes.values(): answer *..

Algorithm 2024.11.03

[프로그래머스] 전화번호 목록 (Python, 해시)

전화번호 목록 풀이내 번호가 다른 사람의 번호의 접두어가 되는지 확인하고 접두어가 된다면 false 그렇지 않다면 true를 반환한다.처음에는 내 번호를 포함한 다른 번호가 있는지 확인해보려고 했는데 그렇게되면 hash를 사용할 필요가 없어져서 hash를 이용해서 풀고자 다른 방법을 선택했다.  모든 번호를 dict 형태로 저장하고, 내 번호를 앞에서 하나씩 잘라가면서 잘린 번호랑 일치하는 다른 번호가 있는지 확인하는 방법을 선택했다.코드def solution(phone_book): # 1.Hash map생성 hash_map = {} for nums in phone_book: hash_map[nums] = 1 # 2.접두어가 Hash map에 존재하는지 찾..

Algorithm 2024.11.03

[프로그래머스] 이중우선순위큐 (Python, 힙)

이중우선순위큐 풀이operations 배열로 부터 명령어을 추출하고 명령어에 해당되는 명령을 수행하면 된다.명령은 삽입, 최댓값 삭제, 최솟값 삭제의 3가지로 구성되어 있다. 코드와 함께 생각의 흐름을 설명하겠다.코드import heapqdef solution(operations): answer = [] nums =[] for operation in operations: letter, num = operation.split() if letter == 'I': heapq.heappush(nums, int(num)) elif nums: # 최솟값 삭제 if num == "-1": ..

Algorithm 2024.10.31

[프로그래머스] 다리를 지나는 트럭 (Python, 큐)

다리를 지나는 트럭 풀이 다리의 길이만큼의 0으로 초기화된 큐(또는 배열)을 생성해주고, 다리가 견딜 수 있는 최대 무게를 넘어서는지를 검사하며 트럭을 옮겨주면 된다. 트럭이 올라갈 수 있으면 트럭을 올려주고 그렇지 않다면 0을 추가해준다. 마지막 트럭은 다리에 올리지 않고 다리의 길이만큼 더해줘 답을 빠르게 내줄 수 있다.코드from collections import dequedef solution(bridge_length, weight, truck_weights): time = 0 bridge=deque([0] * bridge_length) truck_weights = deque(truck_weights) current_weight = 0 while truck..

Algorithm 2024.10.31