본문 바로가기

PS/백준

(15)
백준 17389 보너스 점수 with Python www.acmicpc.net/problem/17389 17389번: 보너스 점수 숭고한 알고리즘 캠프 퀴즈 타임이 시작되었다! PS 기초, 동적 계획법, 파라메트릭 서치, 욱제의 생일, 탐색, 그리디, 최단경로 알고리즘, 구데기컵, 서로소 집합, 최소 신장 트리, 최소 공통 조상, www.acmicpc.net N = int(input()) S = input() basic = 0 for i in range(N): if S[i] == 'O': basic += i+1 bonus = 0 temp = 0 for i in range(N): if S[i] == 'O': bonus += temp temp += 1 else: temp = 0 print(basic+bonus) N = int(input()) S = inpu..
백준 17269 이름궁합 테스트 with Python www.acmicpc.net/problem/17269 17269번: 이름궁합 테스트 시윤이는 좋아하는 이성이 생기면 가장 먼저 이름궁합부터 본다. 이름궁합을 보는 방법은 간단하다. 먼저 이름을 알파벳 대문자로 적는다. 각 알파벳 대문자에는 다음과 같이 알파벳을 적는데 www.acmicpc.net num = { 'A': 3, 'B': 2, 'C': 1, 'D': 2, 'E': 4, 'F': 3, 'G': 1, 'H': 3, 'I': 1, 'J': 1, 'K': 3, 'L': 1, 'M': 3, 'N': 2, 'O': 1, 'P': 2, 'Q': 2, 'R': 2, 'S': 1, 'T': 2, 'U': 1, 'V': 1, 'W': 1, 'X': 2, 'Y': 2, 'Z': 1 } N, M = map(int,..
백준 10539 수빈이와 수열 with Python www.acmicpc.net/problem/10539 10539번: 수빈이와 수열 수빈이는 심심해서 수열을 가지고 놀고 있다. 먼저, 정수 수열 A를 쓴다. 그리고 그 아래에 정수 수열 A의 해당 항까지의 평균값을 그 항으로 하는 정수 수열 B를 쓴다. 예를 들어, 수열 A가 1, 3, www.acmicpc.net n = int(input()) array = list(map(int, input().split())) result = [] for i in range(n): temp = array[i] * (i+1) for i in range(len(result)): temp -= result[i] result.append(temp) for i in result: print(i, end=' ') n = int..
백준 1759 암호 만들기 with Python www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net from itertools import combinations l, c = map(int, input().split()) array = input().split() array.sort() case = combinations(array, l) aeiou = ['a', 'e', 'i', 'o', 'u'] count = 0 for i in case: for j in range(5): if aeiou[j] in i: cou..
백준 1439 뒤집기 with Python www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net s = input() x_count = 0 for i in range(len(s)-1): if s[i] != s[i+1]: x_count += 1 result = x_count // 2 if x_count % 2 == 1: result += 1 print(result) 완전탐색으로 풀기에는 시간복잡도가 너무 커서 규칙을 발견해 그리디하게 풀었다. 앞에서부터 하나씩 문자를 비교해 서로 다를 경우 x_count를 ..
백준 5585 거스름돈 with Python www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net n = int(input()) rest = 1000 - n coin_types = [500, 100, 50, 10, 5, 1] result = 0 for i in coin_types: while rest >= i: rest -= i result += 1 print(result) n = int(input()) rest = 1000 - n coin_types = [500, 100, 50, 10..
백준 2606 바이러스 with Python www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net n = int(input()) visited = [0] * (n+1) visited[1] = 1 graph = [[] for i in range(n+1)] m = int(input()) for i in range(m): a, b = map(int, input().split()) graph[a].append(b) graph[b].append(a) count = 0 def dfs(start): global count f..
백준 1927 최소 힙 with Python www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import heapq n = int(input()) heap = [] for i in range(n): data = int(input()) if data >= 1: heapq.heappush(heap, data) elif data == 0: if len(heap) == 0: print(0) else: print(heapq.heappop(q)) import heapq n = int(input..