728x90
SMALL
from collections import Counter
def decode_char(i):
return ' ' if i == 0 else chr(i + 64) if i <= 26 else chr(i + 70)
n = int(input())
code = list(map(int, input().split()))
normal = input()
if len(code) != len(normal) or len(set(code)) != len(set(normal)):
print('n')
else:
code_freq = Counter(code)
normal_freq = Counter(normal)
if all(count == normal_freq[decode_char(num)] for num, count in code_freq.items()):
print('y')
else:
print('n')
- 우선 chr()를 이용하여 숫자를 문자열로 변환하는 과정을 함수로 작성하였습니다.
- 단순히 변환된 문자가 평문에 들어있는지만을 판단하는 것이 아닌, 빈도 수까지 맞춰야하는 문제였습니다.
- 때문에 Counter 클래스와 all()을 활용해 빈도 수까지 일일이 비교를 해주었습니다!
728x90
LIST
'알고리즘 문제 > 랜덤 마라톤 (solved.ac)' 카테고리의 다른 글
🥈 5623번: 수열의 합 (0) | 2024.07.19 |
---|---|
🥈 2422번: 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 (0) | 2024.07.18 |
🥈 16677번: 악마 게임 (0) | 2024.07.11 |
🥉 29720번: 그래서 님 푼 문제 수가? (0) | 2024.07.10 |
🥈 14426번: 접두사 찾기 (1) | 2024.07.09 |