https://www.acmicpc.net/problem/5218
문제분석
아스키 코드를 통해 풀 수 있는 문제이다. 알파벳 순으로 숫자를 부여하기 때문에 입력을 받아서 아스키 코드로 변환해주면 풀 수 있다. 빈 리스트에 변환된 아스키 코드 값을 for loop 문을 돌면서 집어넣으면 된다. 단, x가 y보다 큰 경우에 y에 26을 더해서 빼줘야 하므로 이 경우를 if 문을 통해 케이스를 추가해서 리스트에 집어넣도록 한다
코드
n = int(input())
for _ in range(n):
s = []
N, M = map(list, input().split())
for i in range(len(N)):
if ord(N[i]) <= ord(M[i]):
s.append(ord(M[i]) - ord(N[i]))
else:
s.append(ord(M[i]) + 26 - ord(N[i]))
print('Distances: ', end ='')
for i in s:
print(i, end=' ')
print()
문제풀이
N과 M의 크기가 같기 때문에 N의 길이만큼 for loop를 돌든 M의 길이만큼 for loop를 돌든 상관이 없다. for loop를 돌면서 if 문을 통해 x가 큰 경우와 y가 같거나 큰 경우를 나눠서 빈 리스트 s에 아스키 코드로 변형되어 계산한 값을 집어넣는다. 그 후에는 형식에 맞게 출력을 해주는데 이때, end문을 통해서 출력 형식에 맞게 출력되도록 해줘야 한다. 이때 출력을 하고 나서 다음 입력을 받는 부분에서 줄이 바뀌지 않고 입력을 받게 되는데 이를 방지 하기 위해 빈 print문을 넣어준다
'Koala - 5기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준|python] 1966번 프린터 큐 (0) | 2022.01.26 |
---|---|
[BOJ/python] 1157번 단어 공부 (0) | 2022.01.25 |
[백준/C++] 14561번 회문 (2) | 2022.01.25 |
[백준/python] 7795 먹을것인가 먹힐 것인가 (2) | 2022.01.25 |
[백준/python] 1874: 스택 수열 (0) | 2022.01.25 |