https://www.acmicpc.net/problem/2012 2012번: 등수 매기기 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다. www.acmicpc.net 1. 문제 2. 정답 코드 import sys n = int(input()) data = [] for _ in range(n) : data.append(int(sys.stdin.readline())) data.sort() # 오름차순 정렬 unhappy = [abs(x - (i+1)) for i, x in enumerate(data) ] answer = sum(unhappy) print(answer) 최..
https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 1. 문제 2. 정답 코드 n = int(input()) ropes = [] for _ in range(n) : ropes.append(int(input())) ropes.sort() # 오름차순 정렬 # each_max는 각 로프를 사용했을 때 들어올릴 수 있는 중량 합을 담는 리스트 each_max = [x * (len(ropes) - i) for i, x in enumerate(ro..
https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 1. 문제 2. 정답 코드 n = int(input()) p = list(map(int, input().split())) # 앞사람의 인출 시간이 짧을수록 총 인출 시간이 단축된다. # 즉, 인출 시간이 오름차순 정렬되어 있다면 총 인출 시간의 최솟값을 구할 수 있다. p.sort() # p 오름차순 정렬 answer = 0 accumulation = 0 for pi in p : accumulation += pi # i번째 사..
https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 1. 문제 2. 정답 코드 n = int(input()) answer = 0 while n >= 3 : if n % 5 == 0 : answer += n // 5 n = 0 break n -= 3 answer += 1 if n != 0 : answer = -1 print(answer) 그리디 알고리즘이므로, 일단 5킬로그램 봉지로 n 을 모두 배달할 수 있는지 확인한다. 만약 n이 5의 배수라면, 곧 바로 ..
1. 문제 2. 정답 코드 def solution(n, lost, reserve): # lost와 reserve에서의 중복 제거; 차집합 사용 _reserve = list(set(reserve) - set(lost)) _lost = list(set(lost) - set(reserve)) for x in _reserve: if x-1 in _lost: _lost.remove(x-1) elif x+1 in _lost: _lost.remove(x+1) answer = n - len(_lost) return answer 문제의 마지막 제한사항 때문에 가장 먼저 lost와 reserve에서의 중복을 제거해야 한다. remove(값): 리스트에서 첫 번째로 등장하는 값을 삭제한다. 개인적으로 정말 안 풀리던 문제였..