ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] ๋ฐฑ์ค€ 1541 ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ (Greedy)
    ๐Ÿ’ป Algorithm/Python 2022. 7. 8. 19:48

    ๐Ÿ“Œ ๋ฌธ์ œ

    ์„ธ์ค€์ด๋Š” ์–‘์ˆ˜์™€ +, -, ๊ทธ๋ฆฌ๊ณ  ๊ด„ํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์‹์„ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์„ธ์ค€์ด๋Š” ๊ด„ํ˜ธ๋ฅผ ๋ชจ๋‘ ์ง€์› ๋‹ค.

     

    ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์„ธ์ค€์ด๋Š” ๊ด„ํ˜ธ๋ฅผ ์ ์ ˆํžˆ ์ณ์„œ ์ด ์‹์˜ ๊ฐ’์„ ์ตœ์†Œ๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.

    ๊ด„ํ˜ธ๋ฅผ ์ ์ ˆํžˆ ์ณ์„œ ์ด ์‹์˜ ๊ฐ’์„ ์ตœ์†Œ๋กœ ๋งŒ๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

    ์ž…๋ ฅ

    ์ฒซ์งธ ์ค„์— ์‹์ด ์ฃผ์–ด์ง„๋‹ค. ์‹์€ ‘0’~‘9’, ‘+’, ๊ทธ๋ฆฌ๊ณ  ‘-’๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ฐ€์žฅ ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋Š” ์ˆซ์ž์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฐ์†ํ•ด์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ณ , 5์ž๋ฆฌ๋ณด๋‹ค ๋งŽ์ด ์—ฐ์†๋˜๋Š” ์ˆซ์ž๋Š” ์—†๋‹ค. ์ˆ˜๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ์‹์˜ ๊ธธ์ด๋Š” 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

    ์ถœ๋ ฅ

    ์ฒซ์งธ ์ค„์— ์ •๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

    ์˜ˆ์ œ ์ž…๋ ฅ 1

    55-50+40

    ์˜ˆ์ œ ์ถœ๋ ฅ 1

    -35

    ์˜ˆ์ œ ์ž…๋ ฅ 2

    10+20+30+40

    ์˜ˆ์ œ ์ถœ๋ ฅ 2

    100

    ์˜ˆ์ œ ์ž…๋ ฅ 3

    00009-00009

    ์˜ˆ์ œ ์ถœ๋ ฅ 3

    0

     


    ๐Ÿ“Œ ํ’€์ด

    ๐Ÿ’ฌ Code

    import sys
    input = sys.stdin.readline
    
    data = input().rstrip().split('-')
    ans = 0
    
    for i in data[0].split('+'):
        ans += int(i)
    
    for i in data[1:]:
        for j in i.split('+'):
            ans -= int(j)
    
    print(ans)

    ๐Ÿ’ก Solution

    '-'๊ฐ€ ๋‚˜์˜ค๋ฉด ๊ทธ ๋‹ค์Œ '-'๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๊ณ„์† ๋นผ ์ฃผ์—ˆ์„ ๋•Œ ์ตœ์†Ÿ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


    ์˜ˆ๋ฅผ ๋“ค์–ด,
    40-10+30-50-60+70์ด ์ฃผ์–ด์ง€๋ฉด
    40-(10+30)-(50+60+70)-20-80
    ์ด๋ ‡๊ฒŒ ๋ฌถ์–ด์ฃผ๋Š” ๊ฒƒ! ๋”ฐ๋ผ์„œ '-'๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ ์ฃผ๊ธฐ ์œ„ํ•ด ์ž…๋ ฅ์„ ๋ฐ›๊ณ  split('-')์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

     

    40+20-0010+003-050-600+0700๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์™”๋‹ค๊ณ  ํ•ด๋ณด๋ฉด split('-') ํ›„์—๋Š” ['40+20', '0010+003', '050', '600+0700']๊ฐ€ data์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

     

    1. '๊ฐ€์žฅ ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋Š” ์ˆซ์ž์ด๋‹ค.'๋ผ๋Š” ์กฐ๊ฑด ๋•Œ๋ฌธ์— ์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ์— ์Œ์ˆ˜๊ฐ€ ์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ์—†์œผ๋ฏ€๋กœ data[0]์€ ๋ฌด์กฐ๊ฑด ๋”ํ•ด์ค๋‹ˆ๋‹ค.

    for i in data[0].split('+'):
        ans += int(i)

     

    2. data[1], data[2], …๋Š” '-'๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋‰œ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณ„์† ๋นผ์ค๋‹ˆ๋‹ค.

    for i in data[1:]:
        for j in i.split('+'):
            ans -= int(j)

    - int('0010')ํ•˜๋ฉด 10์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

    - ๊ทธ๋ฆฌ๊ณ  ๋‚ด์žฅํ•จ์ˆ˜ ์ค‘ eval()์„ ์‚ฌ์šฉํ•˜๋ฉด string์œผ๋กœ ํ‘œํ˜„๋œ ๊ณ„์‚ฐ์‹์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ฒ˜์Œ์— eval์„ ์ด์šฉํ•ด์„œ ํ’€๋ ค๊ณ  string์— ๊ด„ํ˜ธ๋ฅผ ์‚ฝ์ž…ํ•˜๋„๋ก ์ž‘์„ฑํ–ˆ๋”๋‹ˆ 0010๊ฐ™์€ ์ˆซ์ž ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์ ธ์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋œฏ์–ด๊ณ ์ณค์Šต๋‹ˆ๋‹ค ใ…Ž;

    print(eval('40-(10+20)'))
    # 10

    ๋Œ“๊ธ€

Designed by Tistory.