반응형

개발 연습장/백준 문제풀이 221

[파이썬, Python] 백준 1940: 주몽

문제 https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 코드 n = int(input()) m = int(input()) a = sorted(list(map(int, input().split()))) cnt = 0 start = 0 end = n - 1 while start m: end -= 1 elif a[start] + a[end] < m: start += 1 el..

[파이썬, Python] 백준 10026: 적록색약

문제 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 코드 from collections import deque def bfs(x, y): q.append((x, y)) dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1] visited[x][y] = 1 while q: x, y = q.popleft() for i in range(4): nx = dx[i] + x ny = dy[i] + y if 0

[파이썬, Python] 백준 11000: 강의실 배정

문제 https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 코드 import sys input = sys.stdin.readline import heapq n = int(input()) cls = [list(map(int, input().split())) for _ in range(n)] cls.sort() room = [] heapq.heappush(room, cls[0][1]) for i in range(1, n): if cls[i][0] < room[0]: heapq.heappush(room..

[파이썬, Python] 백준 1149: RGB거리

문제 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) dp = list(list(map(int, input().split())) for _ in range(n)) for i in range(1, n): dp[i][0] += min(dp[i-1][1], dp[i-1][2]) dp[i][1] += min(dp[i-1][0],..

[파이썬, Python] 백준 3986: 좋은 단어

문제 https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 코드 n = int(input()) cnt = 0 for _ in range(n): s = input() stack = [] for i in s: if stack and stack[-1] == i: stack.pop() else: stack.append(i) if not stack: cnt += 1 print(cnt) 설명 우선 n을 받아주고, 정답을 카운트할 cnt를 만들어준다. 그리고 n의 수만큼 ..

[파이썬, Python] 백준 1439: 뒤집기

문제 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 코드 s = input() cnt = 0 for i in range(len(s) - 1): if s[i] != s[i + 1]: cnt += 1 print((cnt + 1) // 2) 설명 어렵게 접근하려다가 아이디어가 생각이 안 나서 그냥 다른 부분을 뒤집어 보기로 생각했다. 0에서 1로 혹은 1에서 0으로 변하는 부분을 카운트해 준다. 그러고 나서 2로 나눈 몫을 출력할 건데 0 혹은 1..

[파이썬, Python] 백준 1541: 잃어버린 괄호

문제 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 코드 exp = input().split('-') ans = 0 for i in exp[0].split('+'): ans += int(i) for i in exp[1:]: for j in i.split('+'): ans -= int(j) print(ans) 설명 식의 값이 최소가 되려면 최대한 큰 값을 빼주어야 한다. 즉, '-' 뒤의 모든 + 값을 괄호로 묶어주면 된다. [3 + 5 ..

[파이썬, Python] 백준 3273: 두 수의 합

문제 https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) nums = sorted(list(map(int, input().split()))) x = int(input()) cnt = 0 start = 0 end = n - 1 while start < end: inter_sum = nums[s..

[파이썬, Python] 백준 2559: 수열

문제 https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 코드 import sys input = sys.stdin.readline n, k = map(int, input().split()) nums = list(map(int, input().split())) part_sum = sum(nums[:k]) max_sum = part_sum for i in range(k, n): part_sum += nums[i] - nums[i - k] ..

[파이썬, Python] 백준 2776: 암기왕

문제 https://www.acmicpc.net/problem/2776 2776번: 암기왕 연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, www.acmicpc.net 코드 import sys input = sys.stdin.readline t = int(input()) for _ in range(t): n = int(input()) note1 = set(map(int, input().split())) m = int(input()) note2 = list(map(int, input().split())) for num in note2: if num in note1..

반응형