
14402. ์ผ๊ทผ (silver 4)
# ์๋ฃ๊ตฌ์กฐ
์์ ํ์ฌ๋ ์ผ๊ทผ์ด ๋งค์ฐ ์ฆ์ ํ์ฌ์ด๋ค. ๋คํํ๋ ์ผ๊ทผ์๋น์ ์ฑ๊ฒจ ์ฃผ๊ธฐ๋ ํ๋๋ฐ, ์ฌ์ฅ nein์ ๋งค์ฐ ์ ๋ํ ์ฌ์ฅ์ด๊ธฐ ๋๋ฌธ์ ์ต๋ํ ์ผ๊ทผ ์๋น์ ์ ์ฑ๊ฒจ์ฃผ๋ ค ํ๋ค.
์์ ํ์ฌ์ด ์ผ๊ทผ์ธ์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค. ๋งค์ฐ ์ด๋ฅธ ์์นจ๋ถํฐ ํด๊ทผ์๊ฐ๊น์ง ์ถ์ ๊ธฐ๋ก์ด ์ฃผ์ด์ง๋ค. ๋ง์ฝ, ๋ค์ด๊ฐ ๊ธฐ๋ก์ ์๋๋ฐ, ๋์จ ๊ธฐ๋ก์ด ์๋ค๋ฉด ํ์ฌ์์ ์ผ๊ทผ์ ํ ๊ฒ์ผ๋ก ๊ธฐ๋ก๋๋ค. ๋ํ ํ์ฌ์ ๋ค์ด๊ฐ๋๋ฐ, ํด๊ทผ์๊ฐ๊น์ง ๋์ค์ง ์๋๋ค๋ฉด, ์ด ๋ํ ์ผ๊ทผ์ ํ๋ ๊ฒ์ผ๋ก ๊ธฐ๋ก๋๋ค. ์ถ์ ๊ธฐ๋ก์ ๋ฐ๋ผ์ ๋ ๊ธฐ์ค ๋ค ๋ง์กฑํ ์๋ ์๋๋ฐ, ์ด๋ ์ผ๊ทผ์ ๋ ๋ฒ ํ ๊ฒ์ผ๋ก ์ธ์ ๋๋ค. ํ์ง๋ง, ํ์ฌ์ ๊ณ์ ์์์ง๋ง ๋์ค๊ฑฐ๋ ๋ค์ด๊ฐ์ง๋ฅผ ์์ ์ถ์ ๊ธฐ๋ก์ด ์๋ค๋ฉด ์ผ๊ทผ์ ํ ๊ฒ์ผ๋ก ์ธ์ ํ์ง ์๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ์ถ์ ๊ธฐ๋ก์๋ ์น๋ช ์ ์ธ ๋จ์ ์ด ์๋๋ฐ, ๋๋ช ์ด์ธ์ ๊ตฌ๋ณํ์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค. ์ด๋ฆ์ด ๊ฐ์ ๊ฒฝ์ฐ, ๊ฐ์ ์ฌ๋์ผ๋ก ์ธ์ํ๋ฉฐ, ๋๋ค ํ์ฌ์ ๋จ์์๊ฑฐ๋ ๋ค์ด๊ฐ ๊ธฐ๋ก ์์ด ๋์จ ๊ธฐ๋ก์ด ์๋ ์์ผ๋ก, ๋ช ํํ ๋ณด์ด๋ ๊ฒฝ์ฐ์๋ง ๋ณต์๋ก ์ผ๊ทผ์ด ์ธ์ ๋๋ค.
์์ ํ์ฌ์ ์ค๋์ ์ถ์ ๊ธฐ๋ก์ด ์ฃผ์ด์ง๋ค. ์ด ๊ธฐ๋ก์ ๋ฐํ์ผ๋ก ๋ชจ๋ ์ง์์ ์ผ๊ทผ ํ์์ ํฉ์ ์ถ๋ ฅํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์ถ์ ๊ธฐ๋ก์ ๊ฐ์ q๊ฐ ์ฃผ์ด์ง๋ค.( 1≤q≤100,000)
๋ค์ q์ค์๋ ์ด๋ฆ s์ ๋ค์ด๊ฐ์ง ๋๊ฐ์ง์ ๋ํ ์ ๋ณด p๊ฐ ์ฃผ์ด์ง๋๋ฐ, p๋ ‘+’์ผ ๋ ๋ค์ด๊ฐ ๊ฒ์ด๊ณ , ‘-‘์ผ ๋ ๋๊ฐ ๊ฒ์ด๋ค. ์ด๋ฆ์ ๊ธธ์ด๋ 30์๋ฅผ ๋์ง ์๋๋ค. ์ด๋ฆ์ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค.
์ถ๋ ฅ
์ถ์ ๊ธฐ๋ก์ ๋ฐํ์ผ๋ก ๋ชจ๋ ์ง์์ ์ผ๊ทผ ํ์์ ํฉ์ ์ถ๋ ฅํ์์ค.
์์ ์ ๋ ฅ1
7
nein +
nein -
nein -
nein -
nein +
nein +
nein +
์์ ์ถ๋ ฅ1
5
ํ์ด)
์ฐ์ ์ถ์ ๊ธฐ๋ก์ ๊ฐ์๋ฅผ q ๋ณ์์ ์ ์ฅํด์ฃผ์๋ค. ๊ทธ ๋ค์ ๋์ ๋๋ฆฌ์ overtime ๋ณ์๋ฅผ ์ ์ธํด์ฃผ์๋ค.
for๋ฌธ์ ์ฌ์ฉํด์ ์ถ์ ๊ธฐ๋ก์ ๊ฐ์๋งํผ ๋ฐ๋ณตํ ๋, record์ ์ถ์ ๊ธฐ๋ก์ ๋ฆฌ์คํธ ํํ๋ก ์ ์ฅํด์ฃผ์๋ค.
์ ๋ ฅํ ๊ธฐ๋ก ์ค 0๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ name์ ์ ์ฅํ๊ณ , 1๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ data์ ์ ์ฅํด์ฃผ์ด if elif๋ฌธ์ ์จ์ฃผ์๋ค.
๋ง์ฝ data์ ๊ฐ์ด -์ธ ๊ฒฝ์ฐ์๋ ํ์ฌ์์ ๋์จ ๊ฒฝ์ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ์ง ๊ฒฝ์ฐ๋ก ๋ ๋๋ ์ค ์ ์๋ค.
- check ๋์ ๋๋ฆฌ์ ์ด๋ฆ์ด ์๋ ๊ฒฝ์ฐ -> ์ผ๊ทผํ ๊ฒฝ์ฐ
- check ๋์ ๋๋ฆฌ์ ์ด๋ฆ์ด ์๋ ๊ฒฝ์ฐ -> ์ผ๊ทผ์ ํ์ง ์๊ณ ํด๊ทผํ ๊ฒฝ์ฐ
๋ฐ๋ผ์ ์ด์ ๋ง๊ฒ 1๋ฒ์ ๊ฒฝ์ฐ์๋ ์ผ๊ทผํ ์ฌ๋์ ์๋ฅผ ์ธ๋ ๋ณ์์ธ overtime์ 1์ ๋ํด์ฃผ์๊ณ , 2๋ฒ์ ๊ฒฝ์ฐ์๋ name ์ธ๋ฑ์ค์ ํด๋นํ๋ value๊ฐ์ 1 ๋นผ์ฃผ์๋ค.
elif๋ฌธ์ ์ฌ์ฉํด์ data๊ฐ +์ธ ๊ฒฝ์ฐ์๋ ํ์ฌ์ ๋ค์ด๊ฐ ๊ฒฝ์ฐ์ด๋ค. name์ด ๋์ ๋๋ฆฌ์ ์๋ ๊ฒฝ์ฐ 1๋ก value๊ฐ์ ์ ์ฅํด์ฃผ์๊ณ , name์ด ์ด๋ฏธ ๋์ ๋๋ฆฌ์ ์กด์ฌํ๋ ๊ฒฝ์ฐ์๋ 1์ ๋ํด์ฃผ์๋ค. ์ด๋ name ์ธ๋ฑ์ค์ ๋ํด value์ ๊ฐ์ด 0์ด ์๋ ๊ฒฝ์ฐ๋ overtime๊ณผ ํจ๊ป ์ผ๊ทผํ ์ผ์ด์ค์ ์ํ๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง ์ผ๊ทผํ๋ ์ง์์ ์๋ฅผ ์ถ๋ ฅํ ๋์๋ check ๋์ ๋๋ฆฌ์ value๊ฐ๊ณผ overtime์ ๋ํด์ค ๊ฐ์ ์ถ๋ ฅํด์ฃผ์๋ค.
import sys
input = sys.stdin.readline
q = int(input()) # ์ถ์
๊ธฐ๋ก์ ๊ฐ์
check = {}
overtime =0
for i in range(q):
enter = list(input().split()) # ๊ธฐ๋ก
name, data = enter[0], enter[1]
if data == '-': # ํ์ฌ์์ ๋์ด
if name not in check or check[name] == 0: # ์ผ๊ทผํ ๊ฒฝ์ฐ
overtime +=1
elif name in check: # ์ผ๊ทผ ์ ํ ๊ฒฝ์ฐ
check[name] -=1
elif data == '+': # ๋ค์ด๊ฐ ๊ฒฝ์ฐ
if name not in check:
check[name] = 1 # ๋ค์ด๊ฐ๋ค๊ณ ๋ฑ๋ก
else:
check[name] += 1
# ์ผ๊ทผํ๋ ์ง์ ์
print(sum(check.values()) + overtime)
'๋ฐฑ์ค > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 25192๋ฒ (0) | 2022.11.21 |
---|---|
[Python] ๋ฐฑ์ค 10816๋ฒ (0) | 2022.11.21 |
[Python] ๋ฐฑ์ค 1935๋ฒ (0) | 2022.11.21 |
[Python] ๋ฐฑ์ค 2910๋ฒ (0) | 2022.11.20 |
[Python] ๋ฐฑ์ค 17413๋ฒ (0) | 2022.11.20 |