문제
길이가 같은 두 단어가 주어졌을 때, 각 단어에 포함된 모든 글자의 알파벳 거리를 구하는 프로그램을 작성하시오.
두 글자 x와 y 사이의 알파벳 거리를 구하려면, 먼저 각 알파벳에 숫자를 할당해야 한다. 'A'=1, 'B' = 2, ..., 'Z' = 26. 그 다음 y ≥ x인 경우에는 y-x, y < x인 경우에는 (y+26) - x가 알파벳 거리가 된다.
예를 들어, 'B'와 'D' 사이의 거리는 4 - 2 = 2이고, 'D'와 'B' 사이의 거리는 (2+26) - 4 = 24이다.
입력
첫째 줄에 테스트 케이스의 수 (< 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 두 단어가 공백으로 구분되어져 있다. 단어의 길이는 4보다 크거나 같고, 20보다 작거나 같으며, 알파벳 대문자로만 이루어져 있다.
출력
각 테스트 케이스 마다 각 글자의 알파벳 거리를 공백으로 구분해 출력한다.
예제 입력 1
5
AAAA ABCD
ABCD AAAA
DARK LOKI
STRONG THANOS
DEADLY ULTIMO
예제 출력 1
Distances: 0 1 2 3
Distances: 0 25 24 23
Distances: 8 14 19 24
Distances: 1 14 9 25 1 12
Distances: 17 7 19 5 1 16
[ 문제분석 ]
글자수가 같은 두 단어가 한 칸의 띄어쓰기를 사이에 두고 한 줄씩 나란히 입력된다.
글자수가 같으니 각 단어의 각 자릿수마다의 거리를 계산해서 출력하는 문제이다.
알파벳 거리는 앞의 알파벳의 순서에 뒤의 알파벳의 순서를 뺀 것이다.
예제의 첫번째 줄을 예시로 본다면, A와 A, A와 B, A와 C, A와 D의 거리를 계산해서 각각 출력하면 된다.
만약 앞의 단어가 뒤의 단어보다 알파벳 순서가 뒤라면, 뒤의 알파벳 순서에 알파벳의 개수 26을 더한 후 앞의 알파벳 순서를 빼면 알파벳 거리가 나온다.
[ 코드 ]
[ 문제풀이 ]
몇 번 입출력 할것인지 변수 t로 입력받는다.
두 단어를 순서대로 a, b로 입력받은 후 어차피 a와 b의 자릿수는 같으니 a의 자릿수만큼 for문을 돌려서 단어 a와 b의 각 글자의 순서를 비교한다.
b의 순서가 a의 순서보다 크다면 그냥 b-a를 하면 되지만, 아니라면 위에서 설명했듯 b의 순서에 26을 더한 후 a의 순서를 빼면 된다.
'Koala - 5기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준 / python] 5789번 한다 안한다 (1) | 2022.02.06 |
---|---|
[백준|13732] Falling apples (2) | 2022.02.05 |
[백준/python] 3986. 좋은 단어 (0) | 2022.01.31 |
[백준/python] 15813번:너의 이름은 몇 점이니? (0) | 2022.01.30 |
[백준/python] 9226:도깨비말 (0) | 2022.01.30 |