[BOJ] #2437 ์ €์šธ (Python, Greedy)

    ๋ฐ˜์‘ํ˜•

    ๐ŸŒฑ ๋ฌธ์ œ

     

    2437๋ฒˆ: ์ €์šธ

    ํ•˜๋‚˜์˜ ์–‘ํŒ” ์ €์šธ์„ ์ด์šฉํ•˜์—ฌ ๋ฌผ๊ฑด์˜ ๋ฌด๊ฒŒ๋ฅผ ์ธก์ •ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด ์ €์šธ์˜ ์–‘ ํŒ”์˜ ๋์—๋Š” ๋ฌผ๊ฑด์ด๋‚˜ ์ถ”๋ฅผ ์˜ฌ๋ ค๋†“๋Š” ์ ‘์‹œ๊ฐ€ ๋‹ฌ๋ ค ์žˆ๊ณ , ์–‘ํŒ”์˜ ๊ธธ์ด๋Š” ๊ฐ™๋‹ค. ๋˜ํ•œ, ์ €์šธ์˜ ํ•œ์ชฝ์—๋Š” ์ €์šธ์ถ”๋“ค๋งŒ ๋†“

    www.acmicpc.net

     

    ๐ŸŒฑ ํ’€์ด

    0. ์ ‘๊ทผํ•˜๊ธฐ

    ๋ฌธ์ œ ์˜ˆ์‹œ์—์„œ ์ถ”๊ฐ€ 1, 1, 2, 3, 6, 7, 30์ผ ๋•Œ, ์ •๋‹ต์ด 21์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์ถ”์˜ ๋ฐฐ์—ด์ด [1, 1, 2, 3, 6, 7, 30]์ผ ๋•Œ ์•ž์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋”ํ•œ ๊ฐ’์˜ ๋ฐฐ์—ด์€ [1, 2, 4, 7, 13, 20, 50]์ž…๋‹ˆ๋‹ค. ์ •๋‹ต์ด 21์ž„์„ ์•„๋Š” ์ƒํƒœ์—์„œ๋Š” 1-20๊นŒ์ง€์˜ ๋ฌด๊ฒŒ๋Š” ๋ฌด์กฐ๊ฑด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ 1๋ถ€ํ„ฐ 20๊นŒ์ง€๋Š” ๋ฌด์กฐ๊ฑด ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 31๋ถ€ํ„ฐ 50๊นŒ์ง€๋„ ๋ฌด์กฐ๊ฑด ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ์— 30์„ ๋”ํ•จ) ๋˜ํ•œ, 1๋ถ€ํ„ฐ 13๊นŒ์ง€ ๋ฌด์กฐ๊ฑด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด 7์„ ๋”ํ•œ 20๊นŒ์ง€๋„ ๋ฌด์กฐ๊ฑด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์•„์ด๋””์–ด๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๊ฑด์€ "์—ฌ๊ธฐ๊นŒ์ง€๋Š” ๋ฌด์กฐ๊ฑด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ๋‹ค!"๋ผ๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    ๊ทธ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์ด์ „ ์ƒํƒœ๊นŒ์ง€ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ๊ฐ€ ๋‹ค์Œ ์ถ”๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    • ์ถ”๊ฐ€ [1, 1, 2, 3, 6, 7, 30]์ด๋ฉด 7๊ณผ 30์‚ฌ์ด์— ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ์— ๋นˆ๊ณต๊ฐ„์ด ์ƒ๊น๋‹ˆ๋‹ค.
    • ์ถ”๊ฐ€ [1, 1, 2, 6, 7, 8, 30]์ด๋ฉด 2์™€ 6์‚ฌ์ด์— ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ์— ๋นˆ๊ณต๊ฐ„์ด ์ƒ๊น๋‹ˆ๋‹ค. 

    ์ฆ‰, ๋นˆ๊ณต๊ฐ„์—†์ด ๋ฌด๊ฒŒ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ ค๋ฉด ์ด์ „ ์ถ”๊ฐ€ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ์˜ ์ตœ๋Œ“๊ฐ’์ด ๋‹ค์Œ ์ถ”์˜ ๋ฌด๊ฒŒ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋ฌด๊ฒŒ๊ฐ€ 2์ธ ์ถ”๊ฐ€ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ๋Š” 3๋ถ€ํ„ฐ 4์ธ๋ฐ, ์ตœ๋Œ“๊ฐ’์ธ 4๊ฐ€ ๋‹ค์Œ ์ถ”์˜ ๋ฌด๊ฒŒ์ธ 6๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ๋นˆ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

    1. ์ถ”์˜ ๋ฌด๊ฒŒ ์ •๋ ฌํ•˜๊ธฐ

    ์ถ”์˜ ๋ฌด๊ฒŒ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ ํ›„, ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์˜ค๋ฉฐ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ๋ฅผ ๊ฒฐ์ •์ง€์–ด์•ผ ์–ด๋””์—์„œ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๋ฌด๊ฒŒ๊ฐ€ ์ƒ๊ธฐ๋Š” ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    weights = list(map(int, input().split()))
    weights.sort()

    2.

    num = 1
    for i in range(n):
        if num < weights[i]:
            break
        num += weights[i]
    print(num)

    ์ถ”๋ฅผ ํ•˜๋‚˜์”ฉ ๋Œ๋ฉด์„œ ์ด์ „ ์ƒํƒœ์—์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ์˜ ์ตœ๋Œ“๊ฐ’(num)๋ณด๋‹ค ํ˜„์žฌ ์ถ”์˜ ๋ฌด๊ฒŒ(weights[i])๊ฐ€ ํฌ๋ฉด ์ •๋‹ต์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

     

    ๐ŸŒฑ ์ฝ”๋“œ

    # !/usr/bin/env python
    # -*- coding: utf-8 -*-
    # boj 2437 ์ €์šธ
    
    from itertools import combinations
    import sys
    input = sys.stdin.readline
    
    n = int(input().rstrip())
    weights = list(map(int, input().split()))
    weights.sort()
    
    num = 1
    for i in range(n):
        if num < weights[i]:
            break
        num += weights[i]
    print(num)

     

    +) ์ฐธ๊ณ ํ•œ ๋ธ”๋กœ๊ทธ

     

    BOJ 2437๋ฒˆ ์ €์šธ [๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜]

    ๋‹น์‹ ์—๊ฒŒ ์ฃผ์–ด์ง„ ์ถ” n๊ฐœ๊ฐ€ ์žˆ๋‹ค. ๊ฐ ์ถ”์—” ๋ฌด๊ฒŒ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.์ด ์ถ”๋“ค์˜ ์กฐํ•ฉ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๋ฌด๊ฒŒ์ค‘ ์ตœ์†Œ๊ฐ’์„ ์•Œ์•„๋‚ด์•ผํ•œ๋‹ค.์ฒ˜์Œ์— ์ƒ๊ฐํ–ˆ์„๋• ์ •๋ ฌ์‹œ์ผœ์„œ ๋‚ฎ์€ ์ˆ˜๋ถ€ํ„ฐ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค ๊ตฌ

    velog.io

     

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€