1. 문제 출처 https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 2. 풀이 단순한 구현 문제이다 # 입력 n = int(input()) tests = list(map(int, input().split())) total, vice = map(int, input().split()) # 모든 시험장에 총감독관 1명씩 들어 가므로 시험장 개수 만큼 감독관 수를 더해준다. count = len(t..
1. 문제 출처 https://www.acmicpc.net/problem/13413 13413번: 오셀로 재배치 로봇을 좋아하는 세희는 로봇동아리에서 카메라와 센서, 라즈베리 파이, 집게발을 이용해 로봇을 완성하였다. 이 로봇을 통해서 오셀로 재배치라는 작업을 하려고 한다. 오셀로 말은 앞면이 검 www.acmicpc.net 2. 풀이 그리드 알고리즘 문제로 뒤집어야 하는 돌의 위치를 먼저 파악 후 자리를 바꾸는 돌을 파악한다. # 그리디 알고리즘을 사용하여 먼저 색깔의 차이를 확인한 후 # 자리를 바꾸도록 한다. #입력 t = int(input()) for _ in range(t): size = int(input()) init = input() goal = input() result = 0 change..
1. 문제 출처 https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 2. 풀이 해당 문제는 흔히 Knapsack 알고리즘 문제이다 가방의 담을 수 있는 무게가 정해져 있을 때, 최대한 가치를 가지도록 배낭을 싸는 문제이다.. 이를 다음과 같이 정의할 수있다. 1.현재 배낭의 한계량 보다 큰 무게의 물건은 넣지 않는다. 2.현재 배낭의 한계량 보다 작은 무게라면 더 좋은 가치의 물건을..
1. 문제 출처 https://www.acmicpc.net/problem/14405 14405번: 피카츄 피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다. 문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문 www.acmicpc.net 2. 풀이 단순 구현 # 입력 talk = input() pikachu = ["pi","ka","chu"] idx = 0 # 해당 문자열로 이루어져 있는지 확인 def solution(check,idx): flag = True if talk[idx:idx+len(check)] == check: idx+=len(check) else: flag..
1. 문제 출처 https://www.acmicpc.net/problem/1969 1969번: DNA DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오 www.acmicpc.net 2. 풀이 그리디 알고리즘을 이용한 문제이다.. 힌트에 브루투포스 알고리즘도 적혀있던데 왜일까?? hamming_distance 구하는 과정이 모든 dna와 연산해야 해서 그런가? # 입력 n,m = map(int,input().split()) dnas = [] for _ in range(n): dnas.append(input()) # ..
1. 문제 출처 https://www.acmicpc.net/problem/1755 1755번: 숫자놀이 79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 www.acmicpc.net 2. 풀이 단순 구현 문제이다. # 입력 m,n = map(int,input().split()) # 숫자와 문자열 num_name = ["zero","one","two","three","four","five","six","seven","eight","nine"] # 정수 리스트 int_list = [list(str(idx)) f..
1. 문제 출처 https://www.acmicpc.net/problem/9324 9324번: 진짜 메시지 스파이들은 사령부와 통신하기 위해서 SMTP(비밀 메시지 전송 프로토콜)를 사용해 비밀 회선으로 전자 메시지를 보낸다. 메시지가 적들에 의해 조작되어 보내진 것이 아닌 진짜 메시지라는 것 www.acmicpc.net 2. 풀이 단순 구현 문제이다. # 테스트 케이스 받기 num = int(input()) # 각 메세지 판단 함수 def solution(msg): # 메세지 문자 딕셔너리 msg_char_list = {} # 3번 째 나온 단어 is_third = 0 # 성공 여부 flag = True for char in msg: # 만약 is_third 가 0이 아니면 if is_third: # ..
1. 문제 출처 https://www.acmicpc.net/problem/2002 2002번: 추월 입력은 총 2N+1개의 줄로 이루어져 있다. 첫 줄에는 차의 대수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 대근이가 적은 차량 번호 목록이 주어지고, N+2째 줄부터 N개의 줄에는 영식이 www.acmicpc.net 2. 풀이 #입력 n = int(input()) in_list = [] out_list = [] # 들어온 순서 for _ in range(n): in_list.append(input()) # 나간 순서 for _ in range(n): out_list.append(input()) # 유죄 차량 guilty_list =[] # 들어온 차량 리스트 인덱스 right ..