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 |