[프로그래머스-해시] 폰켓몬 문제 풀이
문제당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다.첫 번째(3번), 두 번째(1번) 폰켓몬을 선택첫 번째(3번), 세 번째(2번) 폰켓몬을 선택첫 번째(3번),..
2024. 11. 12.
[Python] zip()함수와 * 활용
zip() 함수zip() 함수는 2개 이상의 시퀀스(리스트, 튜플 등)를 짧은 길이를 기준으로 일대일 대응하는 새로운 튜플 시퀀스를 만든다.a = [1,2,3,4,5]b = [2,3,4,5]c = [3,4,5]zip(a,b) # 결과: list(zip(a,b))# 결과: [(1, 2), (2, 3), (3, 4), (4, 5)]list(zip(a,b,c))# 결과: [(1, 2, 3), (2, 3, 4), (3, 4, 5)]파이썬 3+에서는 zip() 함수가 제너레이터를 반환하므로, 결과를 바로 보려면 list()로 묶어야 한다.zip() 함수는 리스트가 아닌 튜플로 시퀀스를 생성하므로, 값을 변경할 수 없는 불변 객체이다. d = list(zip(a,b,c))d[0] # (1,2,3)d[0][0] ..
2024. 11. 11.
11장. 해시 테이블(6) - 예제(상위 K빈도 요소)
상위 k번 이상 등장하는 요소를 추출하라입력: num = [1,1,1,2,2,3] , k=2출력: [1,2] 풀이1. Counter와 우선순위 큐(힙)를 활용한 방법[해결 아이디어]collections.Counter를 사용해 각 요소의 빈도 수를 구하고, 상위 k개를 heapq 모듈의 힙을 이용해 추출한다. 파이썬에서 힙은 최소 힙만 지원하므로, 빈도를 음수로 변환하여 가장 큰 빈도부터 추출할 수 있도록 만든다.[단계별 풀이] 1. 빈도 계산: Counter로 요소별 빈도를 계산import collectionsnum = [1,1,1,2,2,3]freqs = collections.Counter(num) # 결과: # Counter({1: 3, 2: 2, 3: 1}) 2. 힙에 삽입: 각 요소의 빈도 ..
2024. 11. 10.