본문 바로가기

파이썬

[python] 백준 1182번 부분수열의 합 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 💻 코드 import sys from itertools import combinations input = sys.stdin.readline n, s = map(int, input().split()) number = list(map(int, input().split())) count = 0 for i in range(1, n + 1): result = list(c.. 더보기
[python] 백준 14501번 퇴사 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 💻 코드 import sys input = sys.stdin.readline n = int(input()) t_list = [] p_list = [] dp = [0] * (n + 1) for _ in range(n): t, p = map(int, input().split()) t_list.append(t) p_list.append(p) for i in range(n - 1, - 1, -1): if t_list[i] + i > n: dp[i] = dp[i + 1] else: dp[i] = max(p_list[i] + dp[i + t_l.. 더보기
[python] 백준 1991번 트리 순회 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 💻 코드 import sys input = sys.stdin.readline class Node: # 노드 생성 def __init__(self, data, left_node, right_node): self.data = data self.left_node = left_node self.right_node = right_node def preorder(node): # 전위 순회 VLR .. 더보기
[python] 백준 1697번 숨바꼭질 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 def bfs(): queue = deque() queue.append(n) while queue: x = queue.popleft() # 시작점 if x == k: print(visited[x]) break for i in (x - 1, x + 1, x * 2): if 0 시작점 5 != 17이므로 if문은.. 더보기
[python] 백준 10972번 다음 순열 https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 💻 코드 import sys input = sys.stdin.readline n = int(input()) array = list(map(int, input().split())) for i in range(n - 1, 0, -1): # 뒤에서부터 탐색 if array[i - 1] < array[i]: # 앞의 숫자가 뒤의 숫자보다 더 크면 for j in range(n - 1, 0, -1): # 뒤에서부터 탐색 if array[i - 1] < array[j.. 더보기
[python] 백준 2309번 일곱 난쟁이 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 💻 코드 import sys input = sys.stdin.readline dwarf = [int(input()) for _ in range(9)] temp1, temp2 = 0, 0 for i in range(9): for j in range(i + 1, 9): if sum(dwarf) - (dwarf[i] + dwarf[j]) == 100: temp1 = dwarf[i] temp2 = dwarf[j].. 더보기
[python] 백준 1158번 요세푸스 문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 💻 코드 import sys input = sys.stdin.readline n, k = map(int, input().split()) circle = [] result = [] for i in range(1, n + 1): circle.append(i) temp = k - 1 for _ in range(n): if len(circle) > temp: result.append(circle.pop(temp)) temp += k - 1 else: temp = temp % len(circle).. 더보기
[python] 백준 9613번 GCD 합 https://www.acmicpc.net/problem/9613 9613번: GCD 합 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진 www.acmicpc.net 💻 코드 import sys import math input = sys.stdin.readline t = int(input()) for _ in range(t): sum_gcd = 0 num = list(map(int, input().split())) n = num[0] for i in range(1, n): for j in range(2, n + 1): if i < j: .. 더보기