Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Algorithm/Baekjoon

[python3] ์ด์ฝ”ํ…Œ - ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ธˆ์•ก (ch.11 ๊ทธ๋ฆฌ๋”” - ์œ ํ˜•๋ณ„ ๊ธฐ์ถœ๋ฌธ์ œ)

๊ฐ์ž ๐Ÿฅ” 2021. 6. 23. 18:40
๋ฐ˜์‘ํ˜•

์ฐธ๊ณ ) ์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค with ํŒŒ์ด์ฌ ์ฑ…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋œ ๋ฌธ์ œ์™€ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. 
๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋Š” ์ž์„ธํ•˜๊ฒŒ ์ ์ง€ ์•Š๊ณ , ๊ฐ„๋‹จํ•œ ์„ค๋ช…๊ณผ ์ œ ์ฝ”๋“œ๋งŒ ์˜ฌ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ธˆ์•ก (ebook๊ธฐ์ค€ p.513)

- N๊ฐœ์˜ ๋™์ „
- N๊ฐœ์˜ ๋™์ „์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ์–‘์˜ ์ •์ˆ˜ ๊ธˆ์•ก ์ค‘ ์ตœ์†Ÿ๊ฐ’์„๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ•˜์‹œ์˜ค

##### ์ž…๋ ฅ์กฐ๊ฑด
- ์ฒซ์จ‹์ค„ ๋™์ „์˜ ๊ฐฏ์ˆ˜ N๊ฐœ (1 <= N <= 1000 )
- ๋‘˜์จ‹์ค„, ํ™”ํ์˜ ๋‹จ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” N๊ฐœ์˜ ์ž์—ฐ์ˆ˜.ํ™”ํŽ˜์˜ ๋‹จ์œ„๋Š” 1000000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜

<1์ฐจ์‹œ๋„ ๋ฌธ์ œํ’€์ด>

์šฐ์„  ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œํ’€์ด์— ๋Œ€ํ•œ ๊ฒฝํ—˜๊ณผ ๋…ธํ•˜์šฐ๊ฐ€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ป๊ฒŒ๋“  ํ’€์–ด๋ณด์ž ํ•˜๊ณ , for๋ฌธ์œผ๋กœ ๋•Œ๋ ค๋ฐ•์•˜๋‹ค.
์ผ๋‹จ, ์ƒ๊ฐํ•ด๋‚ธ ๊ฒƒ์€, '์ตœ์†Ÿ๊ฐ’'์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ˆซ์ž ๋‘๊ฐœ๋กœ ๋”ํ•ด์„œ ๋‚˜์˜ค๋Š” ์ˆซ์ž๋“ค๋งŒ ๋น„๊ตํ•˜๋ฉด ๋˜์ง€์•Š์„๊นŒ? ์˜€๋‹ค. ํ•˜์ง€๋งŒ, ์‹œ๊ฐ„์˜ ์ œํ•œ์ด ์žˆ๋Š” ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํŠน์„ฑ์ƒ ์—ญ์‹œ ๋‚ด ์ฝ”๋“œ๋Š” ์ œํ•œ์‹œ๊ฐ„ 1์ดˆ ๋‚ด๋กœ ๋Œ์•„๊ฐ€์ง€ ์•Š๊ณ  ๋งค์šฐ๋งค์šฐ ๋Š๋ ค์„œ ์ถœ๋ ฅ์กฐ์ฐจ ์•ˆ๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋˜์–ด๋ฒ„๋ ธ๋‹ค. .. ใ…‹ใ…‹ใ…‹ใ…‹ ์‹œ๊ฐ„๋ณต์žก๋„ ๊ณ ๋ ค ์•ˆํ•˜๋Š” ํ•˜๋“œ์ฝ”๋”ฉ ์ „๋ฌธ๊ฐ€๋„ค ๋‚˜...

n = int(input())
money_type = list(map(int, input().split()))

def solution(n, money_type):
    
    result = []
    for i in range(0, n):
        for j in range(i+1, n):
            price = money_type[i] + money_type[j]
            result.append(price)
    result.sort()
    
    while True:
        for i in range(1, 10000000):
            if i in result:
                pass
            else:
                answer = i
                break
    return answer

solution(n, money_type)

 

<2์ฐจ์‹œ๋„ ๋ฌธ์ œํ’€์ด : ์ •๋‹ต์ฝ”๋“œ>

##### greedy TIP!!
1. ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋Š” ๋ฌด์กฐ๊ฑด for๋ฌธ์„ ๋Œ๋ฆด๊ฒŒ ์•„๋‹ˆ๋ผ, ์˜ค๋ฆ„ ์ฐจ์ˆœ์œผ๋กœ ๋‘๊ณ  ์ž‘์€ ๊ฒƒ๋ถ€ํ„ฐ ๋น„๊ตํ•ด๊ฐ€๋ฉด์„œ ํ’€์–ด์•ผํ•œ๋‹ค.
2. ๋ˆ„์ ํ•ฉ๊ณผ ํ™”ํ๋‹จ์œ„๋ฅผ ๋น„๊ตํ•ด๊ฐ€๋ฉด์„œ ๊ตฌํ•ด๋ณธ๋‹ค. ํ™”ํ๋‹จ์œ„๊ฐ€ ๋ˆ„์ ํ•ฉ ๋ณด๋‹ค ํด ๊ฒฝ์šฐ, ๊ทธ ์‚ฌ์ด์— ๊ฐญ์ด ์กด์žฌํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

๋ˆ„์ ํ•ฉ์„ for๋ฌธ์œผ๋กœ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ตฌํ•ด๋‚˜๊ฐ€๋ฉด์„œ, ์ˆซ์ž 1๋ถ€ํ„ฐ ๋น„๊ตํ•ด ๋‚˜๊ฐ„๋‹ค๋Š” ๊ฒƒ์ด ํฌ์ธํŠธ์˜€๋‹ค. ๋ˆ„์ ํ•ฉ๋ณด๋‹ค ํ™”ํ๋‹จ์œ„๊ฐ€ ํด ๊ฒฝ์šฐ์— ๊ทธ ์‚ฌ์ด์— ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๋œป์ž„์„ ํ•ญ์ƒ ๊ธฐ์–ตํ•˜๊ณ  ๋‹ค์Œ ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ์—์„œ๋Š” ๊ผญ ์ ์šฉํ•ด์„œ ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค.

n = int(input())
money_type = list(map(int, input().split()))


def solution(n, money_type):
    money_type.sort()
    result = 1
    
    for money in money_type:
        if result < money:
            break
        result += money
    
    return result

solution(n, money_type)
๋ฐ˜์‘ํ˜•