반응형

파이썬 196

[파이썬, Python] 백준 9613: GCD 합

문제 https://www.acmicpc.net/problem/9613 9613번: GCD 합 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진 www.acmicpc.net 코드 import math,sys input = sys.stdin.readline t = int(input()) for i in range(t): a = list(map(int, input().split())) n = a[0] nums = a[1:] cnt = 0 for i in range(n-1): for j in range(i+1, n): cnt += math.gc..

[파이썬, Python] 백준 10610: 30

문제 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 코드 nums = list(input()) nums.sort(reverse = True) cnt = 0 for i in nums: cnt += int(i) if cnt % 3 != 0 or "0" not in nums: print(-1) else: print(''.join(nums)) 설명 우선 각 수를 리스트로 받아서 저장해 두고 큰 수를 만들기 위해서 역순으로 정렬을 해주자. 30의 배수가..

[파이썬, Python] 백준 3036: 링

문제 https://www.acmicpc.net/problem/3036 3036번: 링 출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다. www.acmicpc.net 코드 from math import gcd n = int(input()) rings = list(map(int, input().split())) for i in range(1, n): x = gcd(rings[0], rings[i]) print(f'{rings[0] // x}/{rings[i] // x}') 설명 두 수의 최대공약수를 알아내서 최대공약수로 나눈 수를 형식에 맞게 출력하면 되는 문제였다. math에 있는 gcd..

[파이썬, Python] 백준 1094: 막대기

문제 https://www.acmicpc.net/problem/1094 1094번: 막대기 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대 www.acmicpc.net 코드 x = int(input()) sticks = [64] while True: if sum(sticks) > x: stick = min(sticks) // 2 sticks.remove(min(sticks)) if stick + sum(sticks) >= x: sticks.append(stick) else: sticks.append(stick) sticks.append(stick) el..

[파이썬, Python] 백준 1476: 날짜 계산

문제 https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 코드 e, s, m = map(int, input().split()) year = 1 while True: if ((year - e) % 15 == 0) and ((year - s) % 28 == 0) and ((year - m) % 19 == 0): break year += 1 print(year) 설명 간단하게 생각하면 금방 풀 수 있는 문제다. 1년부터 시작해서 연도를 1씩 늘리는데 년도에서..

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

문제 https://www.acmicpc.net/problem/2491 2491번: 수열 0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾 www.acmicpc.net 코드 n = int(input()) num = list(map(int, input().split())) dp1 = [1 for i in range(n)] dp2 = [1 for i in range(n)] for i in range(1, n): if num[i] = num[i-1]: dp2[i] = max(dp2[i], dp2[i-1] + 1) print(max(max(dp1), max(dp2))..

[파이썬, Python] 백준 1789: 수들의 합

문제 https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 코드 n = int(input()) cnt = 0 res = 0 while True: cnt += 1 res += cnt if res > n: break print(cnt - 1) 설명 문제를 이해하는데 애를 먹었다. 서로 다른 N개의 자연수의 합이 S라고 한다 = 최대한 많은 자연수를 이용해서 만들 수 있어야 한다. 이렇게 이해를 하면 조금 더 쉽지 않을까 싶다. 예를 들어 S가 10이라면 1,2,3,4를 사용해서 만들 수 있다. S가 11이라면 역시 1,2,3,4 만을 이용해서 만들 수 있다. S가 15가..

[파이썬, Python] 백준 18258: 큐2

문제 https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 코드 from collections import deque import sys input = sys.stdin.readline n = int(input()) q = deque([]) for _ in range(n): order = input().split() if order[0] == 'push': q.append(order[1]) elif order[0] == 'p..

[파이썬, Python] 백준 2003: 수들의 합 2

문제 https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 코드 import sys input = sys.stdin.readline n, m = map(int, input().split()) num = list(map(int, input().split())) cnt = 0 inter_sum = 0 end = 0 for start in range(n): while inter_sum < m and end < n:..

[파이썬, Python] 백준 7576: 토마토

문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 코드 from collections import deque import sys input = sys.stdin.readline m, n = map(int, input().split()) tomato = [list(map(int, input().split())) for _ in range(n)] queue = deque([]) dx, dy = [-1, 1, 0, 0], [0, ..

반응형