프로그래밍/Algorithm 105

백준 1107 리모컨 파이썬

www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net # 희망채널 N = int(input()) # 고장난 버튼수 M = int(input()) # 0-9 까지 버튼을 가지고 있는 리모컨 remote_controller = {str(i) for i in range(10)} if M > 0: # 고장난 버튼은 리모컨에서 제거 remote_controller-=set(map(str, input().split())) # 현재 보고 있는 채널 curren..

백준 1476 날짜계산 파이썬

www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 브루트포스 매우순한맛이긴한데.. 나는 이 문제가 무척 당황스러웠다. 아니.. 1 2 3 일때 5266년인데.. 이걸 어떻게 풀어야하나.. 최대공약수, 최소공배수를 적용해야하는거같아서 머리로 온통 생각했지만 감이 안올라서 결국 또 검색했다. 다른 블로그 서문을 보는 순간, 아.. 하고 바로 구현에 들어갔다. 무식하게 생각하는게 생각보다 쉽지 않다는걸 깨달은 문제다. 일단은 무식하게 먼저 생각해보자. E, S, M = ..

백준 1037 약수 파이썬

www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net from math import gcd N = int(input()) A = list(map(int, input().split())) ans = A[0] * A[1] // gcd(A[0], A[1]) for i in range(2, N): ans = ans * A[i] // gcd(ans, A[i]) #if ans in A: # ans*=2 print(ans) 처음엔 최소공배수 문제라고 생각하고 위와 같이..

백준 일곱난쟁이 파이썬

www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net A = [int(input()) for _ in range(9)] over_num = sum(A) - 100 A.sort() a, b = -1,-1 for i in range(9): if a != -1: break temp1 = A[i] for j in range(i+1, 9): temp2 = A[j] if temp1 + temp2 == over_num: a, b = i, j break for i in range(len..

백준 한조서열정리하고옴ㅋㅋ 파이썬

www.acmicpc.net/problem/14659 14659번: 한조서열정리하고옴ㅋㅋ 첫째 줄에 봉우리의 수 겸 활잡이의 수 N이 주어진다. (1 ≤ N ≤ 30,000) 둘째 줄에 N개 봉우리의 높이가 왼쪽 봉우리부터 순서대로 주어진다. (1 ≤ 높이 ≤ 100,000) 각각 봉우리의 높이는 중복 없이 www.acmicpc.net 처음 의식의 흐름대로 아래와같이 풀었다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 N = int(input()) archers = list(map(int, input().split())) max_hunt_count = 0 for i in range(N): mountain_height = archers[i] hunt_count = 0 for j in r..

백준 카드 합체 놀이 파이썬

www.acmicpc.net/problem/15903 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import heapq n, m = map(int, input().split()) a = list(map(int, input().split())) heapq.heapify(a) for i in range(m): first = heapq.heappop(a) second = heapq.heappop(a) heapq..

백준 UCPC는 무엇의 약자일까요 파이썬

www.acmicpc.net/problem/15904 15904번: UCPC는 무엇의 약자일까? 첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 s = input() a=['U','C','P','C'] for c in s: if a: if c == a[0]: del a[0] else: break if len(a) == 0: print('I love UCPC') else: print('I hate UCPC') cs 너무 순한맛이라 설명 생략.

백준 멀티탭 스케줄링 파이썬

www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 N, K = map(int, input().split()) A = list(map(int, input().split())) multitab = [A[0]] change_count = 0 for i in range(1, K): current_device = A..

백준 게임을 만든 동준이 파이썬

www.acmicpc.net/problem/2847 2847번: 게임을 만든 동준이 학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 N = int(input()) scores = [int(input()) for _ in range(N)] if N == 1: print(scores[0]) scores.reverse() result=0 for i in range(1, len(scores)): if scores[i] >= scores[i-1]: result+=scores..

백준 뒤집기 파이썬

www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 S = input() zero = 0 one = 0 prev = S[0] if prev == '0': zero+=1 else: one+=1 for i in range(1, len(S)): if S[i] != prev: if S[i] == '0': zero+=1 else: one+=1 prev = S[i] print(..