[파이썬, 스위프트][백준 2285][💛 골드 4] (그리디)

Date:     Updated:

Categories:

Tags:

🧞‍♂️ 난이도

💛 골드 4


🧞‍♂️ 문제

우체국

https://www.acmicpc.net/problem/2285

🧞‍♂️ 유형

그리디


🧞‍♂️ 내 풀이

이 문제는 각 집의 합을 순서대로 더해서 전체 인구의 절반이 넘어가는 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
    }
}


맨 위로 이동하기

BOJ 카테고리 내 다른 글 보러가기