์๊ณ ๋ฆฌ์ฆ ๐ก
9. ์๋๊ทธ๋จ(๋์ ๋๋ฆฌ ํด์ฌ) _ ํ์ด์ฌ
@ENFJ
2025. 2. 20. 17:23
์ ์ฒด์ฝ๋
import sys
from collections import deque
# ์
๋ ฅ ๊ฐ
# AbaAeCe
# baeeACA
sys.stdin=open("C:\\Users\\csh\\Documents\\์ฝ๋ฉํ
์คํธ\\์๋ฃ๊ตฌ์กฐํ์ฉ(์คํ,ํ,ํด์ฌ,ํ)\\input.txt",'rt')
#์
๋ ฅ๋ฐ๊ธฐ
a = input()
b = input()
#๊ฐ ๋ฌธ์์ด์ ๋ฌธ์ ๊ฐ์๋ฅผ ์ ์ฅํ ๋์
๋๋ฆฌ ์์ฑ
str1 = dict()
str2 = dict()
for x in a:
str1[x] = str1.get(x,0) + 1
# print(str1)
for x in b:
str2[x] = str2.get(x,0) + 1
# print(str2)
for i in str1.keys():
# str1 ์ ํค ๊ฐ์ด str2์ ์๋์ง ํ์ธ.
if i in str2.keys():
# ๊ฐ์ ๋ฌธ์๋ผ๋ ๊ฐ์๊ฐ ๋ค๋ฅด๋ฉด ์ ๋๊ทธ๋จ์ด ์๋.
if str1[i] != str2[i]:
print("NO")
break
#๋ฌธ์๊ฐ ์์ ์์ ๊ฒฝ์ฐ
else:
print("NO")
break
# ๋ชจ๋ ๋ฌธ์๊ฐ ์ผ์นํ ๊ฒฝ์ฐ
else:
print("YES")
โ 1. ์ฝ๋ ๊ฐ์
์ด ์ฝ๋๋ ๋ ๊ฐ์ ๋ฌธ์์ด์ ๋น๊ตํ์ฌ **์๋๊ทธ๋จ(Anagram)**์ธ์ง ํ์ธํ๋ ์ฝ๋์ผ.
๐ ์๋๊ทธ๋จ: ๊ฐ์ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ง๋ง ์์๊ฐ ๋ค๋ฅธ ๋ฌธ์์ด (ex: "AbaAeCe"์ "baeeACA")
โ 2. ์ ๋ ฅ๊ฐ ์ฒ๋ฆฌ
a = input() # "AbaAeCe"
b = input() # "baeeACA"
- a: "AbaAeCe"
- b: "baeeACA"
โ 3. ์ฒซ ๋ฒ์งธ ๋์ ๋๋ฆฌ(str1) ๋ง๋ค๊ธฐ
๊ฐ ๋ฌธ์์ ๋ฑ์ฅ ํ์๋ฅผ ์ ์ฅํ๋ ๋์ ๋๋ฆฌ์ผ.
str1 = dict()
for x in a:
str1[x] = str1.get(x, 0) + 1
๐น a = "AbaAeCe" ์ฒ๋ฆฌ ๊ณผ์
๋ฌธ์๋์ ๋๋ฆฌ ๊ฐ (str1)
'A' | {'A': 1} |
'b' | {'A': 1, 'b': 1} |
'a' | {'A': 1, 'b': 1, 'a': 1} |
'A' | {'A': 2, 'b': 1, 'a': 1} (A๊ฐ ๋ ๋์ค๋๊น +1) |
'e' | {'A': 2, 'b': 1, 'a': 1, 'e': 1} |
'C' | {'A': 2, 'b': 1, 'a': 1, 'e': 1, 'C': 1} |
'e' | {'A': 2, 'b': 1, 'a': 1, 'e': 2, 'C': 1} (e๊ฐ ๋ ๋์ค๋๊น +1) |
โก ๊ฒฐ๊ณผ:
{'A': 2, 'b': 1, 'a': 1, 'e': 2, 'C': 1}
โ 4. ๋ ๋ฒ์งธ ๋์ ๋๋ฆฌ(str2) ๋ง๋ค๊ธฐ
str2 = dict()
for x in b:
str2[x] = str2.get(x, 0) + 1
๐น b = "baeeACA" ์ฒ๋ฆฌ ๊ณผ์
๋ฌธ์๋์ ๋๋ฆฌ ๊ฐ (str2)
'b' | {'b': 1} |
'a' | {'b': 1, 'a': 1} |
'e' | {'b': 1, 'a': 1, 'e': 1} |
'e' | {'b': 1, 'a': 1, 'e': 2} (e๊ฐ ๋ ๋์ค๋๊น +1) |
'A' | {'b': 1, 'a': 1, 'e': 2, 'A': 1} |
'C' | {'b': 1, 'a': 1, 'e': 2, 'A': 1, 'C': 1} |
'A' | {'b': 1, 'a': 1, 'e': 2, 'A': 2, 'C': 1} (A๊ฐ ๋ ๋์ค๋๊น +1) |
โก ๊ฒฐ๊ณผ:
{'b': 1, 'a': 1, 'e': 2, 'A': 2, 'C': 1}
โ 5. ๋ ๋์ ๋๋ฆฌ ๋น๊ต
for i in str1.keys():
if i in str2.keys(): # str2์๋ ๊ฐ์ ํค๊ฐ ์๋์ง ํ์ธ
if str1[i] != str2[i]: # ๋ฌธ์์ ๊ฐ์๊ฐ ๋ค๋ฅด๋ฉด NO ์ถ๋ ฅ
print("NO")
break
else:
print("NO") # str2์ ์๋ ๋ฌธ์๊ฐ ์์ผ๋ฉด NO ์ถ๋ ฅ
break
else:
print("YES") # ๋ชจ๋ ๋ฌธ์๊ฐ ๊ฐ์ผ๋ฉด YES ์ถ๋ ฅ
๐น ๋น๊ต ๊ณผ์
๋ฌธ์str1 ๊ฐ์str2 ๊ฐ์๊ฒฐ๊ณผ
'A' | 2 | 2 | โ ๊ฐ์ |
'b' | 1 | 1 | โ ๊ฐ์ |
'a' | 1 | 1 | โ ๊ฐ์ |
'e' | 2 | 2 | โ ๊ฐ์ |
'C' | 1 | 1 | โ ๊ฐ์ |
โ ๋ชจ๋ ๋ฌธ์์ ๊ฐ์๊ฐ ๊ฐ์ผ๋ฏ๋ก "YES" ์ถ๋ ฅ!
โ 6. ์ต์ข ์ถ๋ ฅ
YES
๐ ์ ๋ฆฌ
- ๋ ๋ฌธ์์ด์์ ๋ฌธ์์ ๊ฐ์๋ฅผ ์ธ๊ณ ๋์ ๋๋ฆฌ๋ก ์ ์ฅ
- ๋ ๋์ ๋๋ฆฌ๋ฅผ ๋น๊ตํ์ฌ ๋ฌธ์์ ๊ฐ์์ ์ข ๋ฅ๊ฐ ๊ฐ์ผ๋ฉด YES, ๋ค๋ฅด๋ฉด NO
- ์๋๊ทธ๋จ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ์ฝ๋