본문 바로가기

전체 글

[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] 백준 17087번 숨바꼭질 6 https://www.acmicpc.net/problem/17087 17087번: 숨바꼭질 6 수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이 www.acmicpc.net 💻 코드 import sys import math input = sys.stdin.readline a = [] result = [] n, s = map(int, input().split()) a = list(map(int, input().split())) for i in range(n): result.append(abs(s - a[i])) print(math.gcd.. 더보기
[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] 백준 9095번 1, 2, 3 더하기 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 💻 코드 import sys input = sys.stdin.readline T = int(input()) d = [0] * 100 d[1] = 1 d[2] = 2 d[3] = 4 for _ in range(T): n = int(input()) for i in range(4, n + 1): d[i] = d[i - 1] + d[i - 2] + d[i - 3] print(d[n]) 📝 풀이 저번에 풀었던 2 X n 타일링 문제와 거의 같다. 푸는 방법은 똑같았고 점화식만 아주 살짝 바꿔주면 된다. .. 더보기
[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: .. 더보기
[python] 백준 10845번 큐 https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 💻 코드 import sys from collections import deque input = sys.stdin.readline n = int(input()) queue_list = deque([]) for _ in range(n): command = input() if 'push' in command: num = command[5:] queue_list.append(num) i.. 더보기
[python] 백준 11727번 2 X n 타일링 2 https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 💻 코드 import sys input = sys.stdin.readline d = [0] * 100001 def rectangle_count(x): d[1] = 1 d[2] = 3 for i in range(3, x + 1): d[i] = d[i - 1] + (d[i - 2] * 2) return d[x] n = int(input()) print(rectangle_count(n) % 10007) 📝 풀이 이 문제는 저번에 풀.. 더보기
[python] 백준 1406번 에디터 문제 풀이 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 문제 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어.. 더보기