15566번: 개구리 1 연못 안에 개구리들이 있을 수 있는 연꽃 N개와, 연꽃 사이를 연결하는 다리 역할의 통나무 M개가 있다. 같은 연꽃 쌍을 연결하는 통나무의 개수는 1개 이하이다. 여기에 N마리의 개구리가 각각 www.acmicpc.net 코드 n, m = map(int, input().split()) # 각 개구리의 음식, 취미, 가족, 철학에 대한 흥미도 frogs = [[]]+[list(map(int, input().split())) for _ in range(n)] # 개구리가 선호하는 연꽃의 번호 frog_prefers = [set()]+[set(map(int, input().split())) for _ in range(n)] # 통나무 통로의 대화 주제 topics = [[-1]*(n+..
전체 글
6986번: 절사평균 첫째 줄에 절사평균(N, K)를, 둘째 줄에 보정평균(N, K)를 각각 소수점이하 셋째 자리에서 반올림하여 둘째 자리까지 출력한다. 예를 들어 결과값이 9.667인 경우 9.67로, 5인 경우 5.00으로, 5.5인 경우 www.acmicpc.net 코드 n, k = map(int, input().split()) scores = [float(input()) for _ in range(n)] scores.sort() # 절사평균 cutting = sum(scores[k:n-k])/(n-k*2) # 보정평균 correct = (sum(scores[k:n-k])+scores[k]*k+scores[n-k-1]*k)/n print("{:.2f}".format(cutting+1e-8)) pri..
10211번: Maximum Subarray 크기 N인 정수형 배열 X가 있을 때, X의 부분 배열(X의 연속한 일부분) 중 각 원소의 합이 가장 큰 부분 배열을 찾는 Maximum subarray problem(최대 부분배열 문제)은 컴퓨터 과학에서 매우 잘 알려져 있 www.acmicpc.net 코드 for _ in range(int(input())): n = int(input()) x = list(map(int, input().split())) # 누적합 preSum = [0] for i in range(n): preSum.append(preSum[-1]+x[i]) # 브루트포스 ans = -int(1e9) for l in range(n): for r in range(l+1, n+1): if pre..
10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 코드 num = input() zero_idx = num.find('0') if zero_idx == -1 or int(num) % 3 != 0: print(-1) else: num_lst = sorted(list(num), reverse=True) print(''.join(num_lst)) 이 문제는 3의 배수는 모든 자리의 수를 더하면 3의 배수가 된다는 사실을 알면 쉽게 풀 수 있다. 그렇지만 문제에서는 30의 배수를 찾는 것이니 맨 끝자리에 놓을 '0'이 존..
4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 코드 idx = 1 while True: l, p, v = map(int, input().split()) if l == 0 and p == 0 and v == 0: break ans = v//p*l + (v % p if l >= (v % p) else l) print(f"Case {idx}: {ans}") idx += 1 다른건 쉽지만 V%P의 값이 L보다 큰 경우를 조심해야 한다. 이 경우는 주어진 휴가일수보다 V%P가 커지는 경우이기 때문이다.
3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 코드 n = int(input()) a = sorted(list(map(int, input().split()))) x = int(input()) ans = 0 for i in range(n): s, e = i+1, n-1 while s