ETC/Algorithm(58)
-
프로그래머스, 더 맵게
[유형]자료구조 [문제링크]https://school.programmers.co.kr/learn/courses/30/lessons/42626 [요약]Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우에는 -1을 return 합니다.섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) [문제풀이]1. 배열 scoville을 힙으로 만든다.2. scoville[0]가 K와 크거나 같다면, return ..
2024.08.22 -
백준, N번째 큰 수 ,2075
[유형]자료유형 [문제링크]https://www.acmicpc.net/problem/2075 [요약]N*N의 수가 주어질 때, N번째 큰 수를 찾는 프로그램 [문제풀이]heap의 길이를 n으로 유지하는게 포인트이다.heap의 길이가 n보다 작으면, heappushheap의 길이가 n보다 길고 새로운 자연수가 heap의 가장 작은 수보다 크다면 가장 작은 수를 heappop, 새로운 수를 heappushimport sysdef input(): return sys.stdin.readline().rstrip()import heapqn = int(input())heap =[]init_num = []for _ in range(n): init_num = list(map(int, input().split(..
2024.08.22 -
백준, 최소 힙, 1927
[유형]자료구조 [문제링크]https://www.acmicpc.net/problem/1927 [요약]정수 x가 주어졌을 때, x=0이면, 배열에서 가장 작은 값을 출력하고 그 값을 배열에서 제거한다. 만약, 배열이 비어있는 경우라면 0을 출력한다.x=자연수이면, 배열에 자연수 x를 넣는다. [문제풀이]heap을 사용한다.import sysdef input(): return sys.stdin.readline().rstrip()import heapqn = int(input())heap =[]for _ in range(n): x = int(input()) if x == 0: if not heap: print(0) else: pri..
2024.08.22 -
백준, 생태학, 4358
[유형]자료구조 [문제링크]https://www.acmicpc.net/problem/4358 [요약]미국 전역의 나무들이 주어졌을 때, 각 종이 전체에서 몇 %를 차지하는지 구하는 프로그램을 만들어야 한다. [문제풀이]defaultdict: 인자로 주어진 객체의 기본값을 딕셔너리의 초기값으로 지정할 수 있다.몇 개의 종이 주어지는지 알 수 없기 때문에, while문과 break문을 추가한다.딕셔너리의 키를 통해 tree_name을 저장하고, 정렬을 한다.import sysfrom collections import defaultdictdef input(): return sys.stdin.readline().rstrip()tree_dict = defaultdict(int)n=0while True: ..
2024.08.20 -
백준, 나는야 포켓몬 마스터 이다솜,1620
[유형]자료구조 [문제링크]https://www.acmicpc.net/problem/1620 [요약]포켓몬의 이름이 N개 주어지며, 이후 M개의 줄에 숫자 또는 포켓몬 이름이 주어진다.숫자를 입력 받았다면 포켓몬의 이름을, 포켓몬의 이름을 입력받았다면 번호를 출력하는 프로그램을 작성하시오. [문제풀이]두개의 딕셔너리를 생성한다. 한개는 '번호-포켓몬이름', 나머지 한개는 '포켓몬 이름-번호'입력된 데이터(question)에 따라서 각각의 딕셔너리를 사용한다.import sysdef input(): return sys.stdin.readline().rstrip()by_id = {}by_name = {}n,p = map(int,input().split())for i in range(1,n+1): ..
2024.08.20 -
백준,문자열집합,14425
[유형]자료유형 [문제링크]https://www.acmicpc.net/problem/14425 [요약]총 N개의 문자열로 이루어진 집합 S가 주어진다.입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 것이 총 몇 개인지 구하는 프로그램을 작성하시오. [문제풀이]import sysdef input(): return sys.stdin.readline().rstrip()list_n = []list_p = []ans = 0n,p = map(int,input().split())for _ in range(n): list_n.append(input())for _ in range(p): list_p.append(input())for lp in list_p: if lp in list_..
2024.08.20