Problem Solving
-
[백준] 11866번 문제 (요세푸스 문제 0) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 9. 7. 09:43
https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net from collections import deque from sys import stdin input = stdin.readline n, k = map(int, input().split()) q = deque([i for i in range(1, n + 1)]) result = [] q.rotate(-(abs(k - 1))) while q: result.append(q.popleft()) q.rotate(-(abs(k - 1))) print("") 입력받은 숫자를 기준으로 수열을..
-
[백준] 1697번 문제 (숨바꼭질) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 9. 7. 09:11
https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net from collections import deque n, k = map(int, input().split()) visited = [False] * 100001 q = deque() q.append([n, 0]) while q: pivot, d = q[0][0], q[0][1] if pivot == k: break q.popleft() visited[pivot] = Tr..
-
[백준] 11399번 문제 (ATM) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 9. 6. 13:29
https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net import sys input = sys.stdin.readline n = int(input()) ns = sorted(list(map(int, input().split()))) count = 0 if n == 1: print(ns[0]) else: for i in range(1, len(ns)): ns[i] += ns[i - 1] print(sum(ns)) 뭔가 문제 설명은 긴데.. 되게 단순한 문제다. 정렬을 해주고 for..
-
[백준] 1931번 문제 (회의실 배정) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 9. 6. 13:25
https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net import sys input = sys.stdin.readline n = int(input()) l = sorted(sorted([list(map(int, input().split())) for _ in range(n)], key=lambda x: x[0]), key=lambda x: x[1]) count = 0 last = 0 for a, b in l: if last
-
[백준] 10610번 문제 (30) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 9. 6. 11:34
https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net n = sorted(list(input()), reverse=True) sum = sum(map(int, n)) if sum % 3 != 0 or "0" not in n: print(-1) else: print(''.join(n)) 30의 배수가 되는 조건은 일의 자리수가 0. 각 자리의 숫자들을 더했을때 3으로 나누어 떨어진다. 위 2개가 있고, 해당 조건을 대입하면 정답을 구할 수 있다.
-
[백준] 2875번 문제 (대회 or 인턴) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 9. 6. 11:30
https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net n, m, k = map(int, input().split()) cnt = 0 while n + m - k >= 3 and n >= 2 and m >= 1: n -= 2 m -= 1 cnt += 1 print(cnt) 팀이 만들어 질 수 있는 경우는 n + m - k >= 3 n >= 2 m >= 1 위 3가지 조건이 동시에 만족하면 된다.
-
[백준] 1992번 문제 (쿼드트리) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 9. 6. 11:27
https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net import sys input = sys.stdin.readline n = int(input()) mtx = [list(map(int, list(input().strip()))) for _ in range(n)] def check(x, y, n): for i in range(x, x + n): for j in range(y, y + n): if mtx[x][y] != mtx[i][j]..
-
[백준] 1780번 문제 (종이의 개수) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 9. 6. 11:23
https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net import sys input = sys.stdin.readline n = int(input()) mtx = [list(map(int, input().split())) for _ in range(n)] m, z, o = 0, 0, 0 def check(x, y, length): global m, z, o for i in range(x, x + length): for j in range(..
-
[백준] 10816번 문제 (숫자 카드 2) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 9. 6. 11:19
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net import sys import collections input = sys.stdin.readline n = int(input()) nums = collections.Counter(list(map(int, input().split()))) m = int(input()) target = list(map(int, input().split())) for t in tar..
-
[백준] 2110번 문제 (공유기 설치) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 9. 6. 11:15
https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net import sys input = sys.stdin.readline n, c = map(int, input().split()) houses = [] for _ in range(n): houses.append(int(input())) houses.sort() left = 1 right = houses[-1] - houses[0] result = 0..