-
[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
'๐ป Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 7576 ํ ๋งํ (BFS) (0) 2022.07.08 [Python] ๋ฐฑ์ค 16719 ZOAC (๊ตฌํ) (0) 2022.07.08 [Python] ๋ฐฑ์ค 1012 ์ ๊ธฐ๋ ๋ฐฐ์ถ (BFS) (0) 2022.07.08 [Python] ๋ฐฑ์ค 16206 ๋กค์ผ์ดํฌ (Greedy) (0) 2022.07.08 [Python] ๋ฐฑ์ค 4358 ์ํํ (Counter) (0) 2022.07.08