import sys
n_input = sys.stdin.readline

# 첫 번째 입력: 암호문과 평문의 길이를 동일하게 하기 위해서 길이를 입력받습니다.
n = int(n_input().rstrip())

# 두 번째 입력: 암호문과 평문의 비교를 쉽게 하기 위해 공백을 기준으로 나눠 저장합니다.
s = list(map(int, n_input().rstrip().split(" ")))

# 세 번째 입력: 평문
p = n_input().rstrip()

ex_list = []
for i in p:
    if i.isupper():
        # ord() 함수는 유니코드 코드 포인트 또는 아스키 코드 정수값을 반환하는 함수입니다.
        # 파이썬 2.x에서는 기본 문자열 처리가 아스키 코드 기반이였습니다.
        # 파이썬 3.x에서는 유니코드 문자열을 기본적으로 사용합니다.
        # 'A' 문자의 유니코드 코드 포인트 또는 아스키 코드 65입니다.
        # 'a'의 유니코드 코드 포인트 또는 아스키 코드 97입니다.
        ex_list += [ord(i) - 64]  # -64를 사용해서 A의 값을 1로 치환해줍니다.
    elif i.islower():
        ex_list += [ord(i) - 70]  # -70를 사용해서 a의 값을 27로 치환해줍니다.
    else:
        ex_list += [0]  # 0 -> 띄워쓰기

# 암호문과 평문을 각각 정렬하여 비교하여 해독 가능 여부를 판단하는 부분입니다.
if sorted(s) == sorted(ex_list):  # 암호문과 평문이 같은지 비교합니다.
    print('y')  # 같다면 해독 가능한 경우입니다.
else:
    print('n')  # 다르다면 해독 불가능한 경우입니다.

'코딩 연습 > 백준 코드' 카테고리의 다른 글

세로읽기-10798.py  (0) 2023.10.18
수강신청-13414.py  (0) 2023.10.18
요세푸스-1158.py  (0) 2023.10.18
이항계수  (0) 2023.10.18
별찍기(7)-2777.py  (0) 2023.10.15

+ Recent posts