-
[Python] ๋ฐฑ์ค 16165 ๊ฑธ๊ทธ๋ฃน ๋ง์คํฐ ์ค์์ด (Dictionary)๐ป Algorithm/Python 2022. 7. 2. 15:11
๐ ๋ฌธ์
์ ์ฐ๋ ์๋ฌธ๋ ๊ฑธ๊ทธ๋ฃน ๋ํ์ด๋ค. ์ ์ฐ์ ์น๊ตฌ ์ค์์ด๋ ๊ฑธ๊ทธ๋ฃน์ ์ข์ํ์ง๋ง ์ด๋ฆ์ ์ ์ธ์ฐ์ง ๋ชปํ๋ค๋ ๋ฌธ์ ๊ฐ ์์๋ค. ์ ์ฐ๋ ์น๊ตฌ๋ฅผ ์ํด ๊ฑธ๊ทธ๋ฃน ๊ฐ์ธ๊ณผ ํ์ ์ด๋ฆ์ ๊ฒ์ํ์ฌ ์ธ์ฐ๊ฒ ํ๋ ํด์ฆ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ณ ์ ํ๋ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์๋ ์ด ์ ๋ ฅ ๋ฐ์ ๊ฑธ๊ทธ๋ฃน์ ์ N(0 < N < 100)๊ณผ ๋งํ์ผ ํ ๋ฌธ์ ์ ์ M(0 < M < 100)์ ์ ๋ ฅ๋ฐ๋๋ค.
๋ ๋ฒ์งธ ์ค๋ถํฐ๋ ๊ฐ ๊ฑธ๊ทธ๋ฃน๋ง๋ค ํ์ ์ด๋ฆ, ๊ฑธ๊ทธ๋ฃน์ ์ธ์ ์, ๋ฉค๋ฒ์ ์ด๋ฆ์ ํ ์ค์ฉ ์ฐจ๋ก๋๋ก ์ ๋ ฅ๋ฐ๋๋ค. ํ๊ณผ ๋ฉค๋ฒ์ ์ด๋ฆ์ ์ต๋ 100๊ธ์์ด๋ฉฐ, ๋ชจ๋ ๊ธ์๋ ์ํ๋ฒณ ์๋ฌธ์์ด๋ค. ํ๋์ ๊ฑธ๊ทธ๋ฃน์ด๋ ์๋ก ๋ค๋ฅธ ๋ ๊ฑธ๊ทธ๋ฃน์ ์ด๋ฆ์ด ๊ฐ์ ๋ ๋ฉค๋ฒ๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
๊ทธ ๋ค์ ์ค๋ถํฐ๋ M๊ฐ์ ํด์ฆ๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ๊ฐ๊ฐ์ ํด์ฆ๋ ๋ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ํ์ ์ด๋ฆ์ด๋ ๋ฉค๋ฒ์ ์ด๋ฆ์ด ์ฒซ ์ค์ ์ฃผ์ด์ง๊ณ ํด์ฆ์ ์ข ๋ฅ๋ฅผ ๋ํ๋ด๋ 0 ๋๋ 1์ด ๋ ๋ฒ์งธ ์ค์ ์ฃผ์ด์ง๋ค. ํด์ฆ์ ์ข ๋ฅ๊ฐ 0์ผ ๊ฒฝ์ฐ ํ์ ์ด๋ฆ์ด ์ฃผ์ด์ง๋ฉฐ, 1์ผ ๊ฒฝ์ฐ ๋ฉค๋ฒ์ ์ด๋ฆ์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค๋ถํฐ ์ฐจ๋ก๋๋ก ํด์ฆ์ ๋ํ ๋ต์ ์ถ๋ ฅํ๋ค. ํด์ฆ์ ์ข ๋ฅ๊ฐ 0์ผ ๊ฒฝ์ฐ ํด๋น ํ์ ์ํ ๋ฉค๋ฒ์ ์ด๋ฆ์ ์ฌ์ ์์ผ๋ก ํ ์ค์ ํ ๋ช ์ฉ ์ถ๋ ฅํ๋ค. ํด์ฆ์ ์ข ๋ฅ๊ฐ 1์ผ ๊ฒฝ์ฐ ํด๋น ๋ฉค๋ฒ๊ฐ ์ํ ํ์ ์ด๋ฆ์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
3 4
twice
9
jihyo
dahyeon
mina
momo
chaeyoung
jeongyeon
tzuyu
sana
nayeon
blackpink
4
jisu
lisa
rose
jenny
redvelvet
5
wendy
irene
seulgi
yeri
joy
sana
1
wendy
1
twice
0
rose
1์์ ์ถ๋ ฅ 1
twice
redvelvet
chaeyoung
dahyeon
jeongyeon
jihyo
mina
momo
nayeon
sana
tzuyu
blackpink
๐ ํ์ด
import sys input = sys.stdin.readline n, m = map(int, input().split()) # n์ ๊ฑธ๊ทธ๋ฃน ์, m์ ํด์ฆ ์ team = {} for _ in range(n): name = input().rstrip() # ํ ์ด๋ฆ ์ ์ฅ team[name] = [] for _ in range(int(input())): # ๋ฉค๋ฒ ์ด๋ฆ ์ ์ฅ team[name].append(input().rstrip()) team[name].sort() for _ in range(m): # 1: ํ ์ถ๋ ฅ, #0: ๋ฉค๋ฒ ์ถ๋ ฅ quiz = input().rstrip() if int(input()) == 1: print(''.join([k for k, v in team.items() if quiz in v])) else: print('\n'.join(*[v for k, v in team.items() if quiz in k]))
rstrip()
string์ ๊ฒฝ์ฐ input()์ผ๋ก ๋ฐ์ผ๋ฉด ๊ฐํ๋ฌธ์ '\n'๊น์ง ๊ฐ์ด ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ input().rstrip()์ผ๋ก ๋์ ๊ฐํ๋ฌธ์๋ฅผ ์ ๊ฑฐํด์ฃผ์ด์ผ ํฉ๋๋ค.
dictionary
ํ ์ด๋ฆ์ผ๋ก๋ ๋ฉค๋ฒ๋ฅผ ์ฐพ์ ์ ์์ด์ผ ํ๊ณ , ๋ฉค๋ฒ ์ด๋ฆ์ผ๋ก๋ ํ์ ์ฐพ์ ์ ์์ด์ผ ํ๋ฏ๋ก key(ํ๋ช ): value(๋ฉค๋ฒ) ์์ผ๋ก ์ด๋ค์ง๋ dictionary๋ฅผ ์ฌ์ฉํ๊ธฐ ์ข์ ๋ฌธ์ ์ ๋๋ค.
blackpink: [jenny, jisu, lisa, rose] redvelvet: [irene, joy, seulgi, wendy, yeri]
↑ ์ด๋ฐ ์์ผ๋ก ์ ์ฅ๋๋๋ก!
- team = {} # ํ ๋์ ๋๋ฆฌ
- team[name] = [] # value๋ฅผ list๋ก
- team[name].append(input().rstrip()) # ๋ฉค๋ฒ ์ด๋ฆ ์ ์ฅ
list comprehension
- ๋ฉค๋ฒ ์ด๋ฆ์ผ๋ก ํ ์ฐพ๊ธฐ
# list comprehension ์ ์ฉ X for k, v in team.items(): if quiz in v: print(k) # list comprehension ์ ์ฉ O print(''.join([k for k, v in team.items() if quiz in v]))
- ํ ์ด๋ฆ์ผ๋ก ๋ฉค๋ฒ ์ฐพ๊ธฐ
# list comprehension ์ ์ฉ X for k, v in team.items(): if quiz in k: print(*v, sep='\n') # list comprehension ์ ์ฉ O print('\n'.join(*[v for k, v in team.items() if quiz in k]))
unpaking
'ํ ์ด๋ฆ์ผ๋ก ๋ฉค๋ฒ ์ฐพ๊ธฐ' ๊ณผ์ ์์ list ์์ ๋ฌถ์ฌ ์๋ ๋ฉค๋ฒ ์ด๋ฆ๋ค์ ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํด์ผ ํฉ๋๋ค.
for k, v in team.items(): if quiz in k: print(v, sep='\n')
['irene', 'joy', 'seulgi', 'wendy', 'yeri']
print๋ฌธ์ sep='\n'์ ์ถ๊ฐํด๋ ์์ ๊ฐ์ด list๊ฐ ๊ทธ๋๋ก ์ถ๋ ฅ๋๋๋ฐ, list ์์ unpaking ์ฐ์ฐ์์ธ *์ ๋ถ์ด๋ฉด ๋ฌถ์ฌ ์๋ ๊ฐ๋ค์ ํ์ด์ค ์ ์์ต๋๋ค.
for k, v in team.items(): if quiz in k: print(*v, sep='\n')
irene joy seulgi wendy yeri
'๐ป Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 19638 ์ผํฐ์ ๋ง๋ฒ์ ๋ฟ ๋ง์น (Heapq) (0) 2022.07.02 [Python] ๋ฐฑ์ค 2841 ์ธ๊ณ์ธ์ ๊ธฐํ ์ฐ์ฃผ (Stack) (0) 2022.07.02 [Python] ๋ฐฑ์ค 2346 ํ์ ํฐ๋จ๋ฆฌ๊ธฐ (Deque) (0) 2022.07.02 [Python] ๋ฐฑ์ค 1966 ํ๋ฆฐํฐ ํ (Deque) (0) 2022.07.02 [Python] LeetCode 20 Valid Parentheses (Stack) (0) 2022.07.02