[파이썬, 스위프트][백준 2285][💛 골드 4] (그리디)
Categories: BOJ
🧞♂️ 난이도
💛 골드 4
🧞♂️ 문제
우체국
🧞♂️ 유형
그리디
🧞♂️ 내 풀이
이 문제는 각 집의 합을 순서대로 더해서
전체 인구의 절반이 넘어가는 index
를 찾으면 된다.
***
🧞♂️ 파이썬 풀이
import sys
input = sys.stdin.readline
N = int(input())
totalPeople = 0
houses = []
for _ in range(N):
index, people = map(int, input().split())
totalPeople += people
houses.append((index, people))
peopleCount = 0
for index, people in sorted(houses, key = lambda x: x[0]):
peopleCount += people
if peopleCount > totalPeople//2:
print(index)
break
🧞♂️ 스위프트 풀이
let N = Int(readLine()!)!
var houses: [(Int, Int)] = []
var totalPeople = 0
for _ in 0..<N {
let indexPeople = readLine()!.split(separator: " ").compactMap { Int($0) }
let index = indexPeople[0]
let people = indexPeople[1]
totalPeople += people
houses.append((index, people))
}
houses.sort {
$0.0 < $1.0
}
var peopleCount = 0
for (index, people) in houses {
peopleCount += people
if peopleCount > totalPeople / 2 {
print(index)
break
}
}