Algorithm
[BOJ][Python] 10808 ์ํ๋ฒณ
jihuSunbae
2024. 7. 18. 16:34
๐ซก Overview
์ฒด๊ฐ ๋์ด๋: โ โโโโ
์์์๊ฐ: 20๋ถ
๋ฌธ์ ๋ ๋ฒจ: ๋ธ๋ก ์ฆ / ๋ฌธ์ ์ ํ: ๋จ์๊ตฌํ
ํ์ด ์ํ: ๋ต์์ฐธ๊ณ / ์ค์ค๋ก ํด๊ฒฐ
์ถํ: ๋ค์ ํ์ด๋ณด๊ธฐ / ๊ฐ๋จ ๋ณต์ต/ ์๋ฒฝ ์ดํด
๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/10808
๋์ ์ฝ๋
- Counter dictionary๋ก ํ์๋ค.
from collections import Counter
def main(): # counter ์ฌ์ฉ
lst = input() # ord ํจ์ : ๋ฌธ์๋ฅผ ์
๋ ฅํ๋ฉด, ์์คํค ์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ์ซ์๋ฅผ ๋ฐํํจ.
counter = Counter(lst) # ์นด์ดํฐ ๋์
๋๋ฆฌ ์ฌ์ฉ - ๋ฆฌ์คํธ ์์๋ฅผ key๋ก, ๋น๋์๋ฅผ value๋ก ํ๋ ๋์
๋๋ฆฌ ๋ฐํ
counter = dict(sorted(counter.items())) # ์นด์ดํฐ dict key ๊ฐ ๊ธฐ์ค ์ ๋ ฌ - ์ํ๋ฒณ ์ค๋ฆ์ฐจ์์ ๋๋ก ์ ๋ ฌ
answer = []
for ascii_num in range(97, 123): # ์ํ๋ฒณ a~z๊น์ง ascii ์ซ์
char_ = chr(ascii_num) #๋ฌธ์๋ก ๋ณํ
if counter.get(char_) is None:
answer.append(0)
else:
answer.append(counter[char_])
# ์ ๋ต ์ธ์
print(' '.join(map(str, answer)))
main()
๋๋ณด๊ธฐ
๋จ์ dict์ผ๋ก๋ ๊ตฌํํด๋ดค๋ค.
def main2(): # ์ง์ ๊ตฌํ - dict ์ฌ์ฉ
lst = list(map(str, input())) # ord ํจ์ : ๋ฌธ์๋ฅผ ์
๋ ฅํ๋ฉด, ์์คํค ์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ์ซ์๋ฅผ ๋ฐํํจ.
alph_dict ={} # ์ํ๋ฒณ: key, ๋น๋์ : value
for ascii_num in range(97, 123): # ์ํ๋ฒณ a~z๊น์ง ascii ์ซ์
char_ = chr(ascii_num) # ๋ฌธ์๋ก ๋ณํ
freq = lst.count(char_) # ๋น๋์ ์ธ๊ธฐ
alph_dict[char_] = freq # ๋์
๋๋ฆฌ์ ์ถ๊ฐ
# ๋์
๋๋ฆฌ ์ ๋ ฌ - ์ํ๋ฒณ ์์๋๋ก #print(sorted(alph_dict.items()))
alph_dict = dict(sorted(alph_dict.items()))
# ์ ๋ต ์ธ์
print(' '.join(map(str, alph_dict.values())))โ
๋ชจ๋ฒ ์ฝ๋
- ๋์
๋๋ฆฌ ์ฌ์ฉํ์ง ์๊ณ , lst๋ฅผ ๋์
๋๋ฆฌ ์ฒ๋ผ ์ฌ์ฉํ๋ฉด ๋ ํธํ๋ค.
- lst = [0]*26์ผ๋ก ์ ์
- key: a~z๋ฅผ 0~25์ ์ธ๋ฑ์ค๋ก ๋งค์นญ, value: ๋น๋์ ์ธ ๋์ ๋๋ฆฌ ์ฒ๋ผ ์๊ฐํ๊ธฐ!
- lst = [0]*26์ผ๋ก ์ ์
def reference(): # ๋์
๋๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , lst๋ฅผ ๋์ฒ๋ผ ์ด์ฉ
input_str = input()
lst = [0] * 26 # key: a~z๊น์ง, 0~1๋ก ๋งค์นญ, value: ๋น๋์
for ascii_num in range(97, 123): # ์ํ๋ฒณ a~z๊น์ง ascii ์ซ์
char_ = chr(ascii_num)
lst[ord(char_) - 97] = input_str.count(char_)
print(' '.join(map(str, lst)))
reference()
๋ฐฐ์ด ์
- ์์คํค์ฝ๋ ๋ฌธ์ <-> ์ซ์ ๋ณํ
ord(str): ๋ฌธ์์ ๋ง๋ int ๋ฐํ
chr(num): ์ซ์์ ๋ง๋ char ๋ฐํ
๋์ ๋๋ฆฌ ์ ๋ ฌ
- key ๊ฐ ๊ธฐ์ค ๋์ ๋๋ฆฌ ๊ฐ์ฒด ์ ๋ ฌํ๊ธฐ: dict(sorted(dict.items())) or dict(sorted(dict.items(), key = lambda x:x[0]))
- values ๊ฐ ๊ธฐ์ค์ผ๋ก ๋์ ๋๋ฆฌ ๊ฐ์ฒด ์ ๋ ฌํ๊ธฐ : dict(sorted(dict.items(),key = lambda x:x[1]))
์ผ๋จ ๋๋ค .items()๋ฅผ ๊ฐ์ ธ์์ ์ ๋ ฌํด์ผํจ์ ์ฃผ์
๋ํ, sorted() ํจ์๋ ํํ์ ์ ์ฉํ๋ฏ๋ก, ์ ๋ ฌ ํ dict()์ผ๋ก ๊ฐ์ธ์ ๋์ ๋๋ฆฌ ํํ๋ฅผ ์ ์งํ๋ ๊ฒ์ ์ค์
ages = {'jieun':25, 'mark':28, 'Amy': 17}
# key ๊ฐ ๊ธฐ์ค ๋์
๋๋ฆฌ ์ ๋ ฌํ๊ธฐ - ์ด๋ฆ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
result1 = sorted(ages.items()) # ํํ ๋ฆฌํด [('Amy', 17), ('jieun', 25), ('mark', 28)]
result1 = dict(result1) # ๋์
๋๋ฆฌ ํ์์ผ๋ก ๋ณํ
# ๊ฒฐ๊ณผ: {'Amy': 17, 'jieun': 25, 'mark': 28}
# value ๊ฐ ๊ธฐ์ค ๋์
๋๋ฆฌ ์ ๋ ฌํ๊ธฐ - ๋์ด์์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
result2 = sorted(ages.items(), key = lambda x:x[1])
result2 = dict(result2)
# {'Amy': 17, 'jieun': 25, 'mark': 28}
- ์ ๋ ฌ๋ key ๋ฆฌ์คํธ ์ป๊ธฐ: sorted(dict) or sorted(dict.keys())
- ์ ๋ ฌ๋ value ๋ฆฌ์คํธ ์ป๊ธฐ: sorted(dict.values())
ages = {'jieun':25, 'mark':28, 'Amy': 17}
# ์ ๋ ฌ๋ key ๋ฆฌ์คํธ ์ป๊ธฐ
result3 = sorted(ages) # ['Amy', 'jieun', 'mark']
# ์ ๋ ฌ๋ value ๋ฆฌ์คํธ ์ป๊ธฐ
result4 = sorted(ages.values()) # [17, 25, 28]
๋ ํผ๋ฐ์ค
- ๋์ ๋๋ฆฌ ์ ๋ ฌ https://blockdmask.tistory.com/566