Koala - 9기/기초 알고리즘 스터디
[백준/python] 애너그램
sebinChu
2023. 1. 14. 20:38
https://www.acmicpc.net/problem/6996
6996번: 애너그램
첫째 줄에 테스트 케이스의 개수(<100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 100을 넘지 않는 단어가 공백으로 구분되어서 주어진다. 단어는 알파벳 소문자로만 이루어
www.acmicpc.net
🔎 처음시도
n = int(input())
for _ in range(n):
a, b = input().split()
cnt = 0
for i in a:
if i in b:
cnt += 1
if cnt == len(a) and len(a) == len(b):
print('{} & {} are anagrams.'.format(a,b))
else:
print('{} & {} are NOT anagrams.'.format(a,b))
반례: aaaa aaab.
이유: if i n b 코드에서 변수 a와 변수 b가 가진 a의 개수에 상관없이, 포함되어있는지 아닌지만 판단했기 때문에, 오류 발생.
같은 어미 + 같은 개수를 확인할 방법으로 딕셔너리가 떠올라서 코드를 수정했다.
💻 두번째 시도_ 최종 코드
n = int(input())
ad = {}
bd = {}
for _ in range(n):
a, b = input().split()
flag = True
if len(a) == len(b):
for i in a:
if ad.get(i):
ad[i] += 1
else:
ad[i] = 1
for j in b:
if bd.get(j):
bd[j] += 1
else:
bd[j] = 1
if ad == bd:
print('{} & {} are anagrams.'.format(a,b))
else:
print('{} & {} are NOT anagrams.'.format(a,b))
else:
print('{} & {} are NOT anagrams.'.format(a,b))
한시간 넘게 고민해서 썼는데 알고보니 그냥 정렬하면 8줄도 안되게 끝나는 문제다.