์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ’ก

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
  • ์•„๋‚˜๊ทธ๋žจ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ