[SWEA][D3][#10804] 문자열의 거울상
작성:    
업데이트:
카테고리: SWEA D3
태그: ProblemSolving, SWEA D3, SWEA PS
출처
학습용 포스트입니다. 본 포스트가 문제가 될 시 수정 또는 삭제하겠습니다.
문제
‘b’, ‘d’, ‘p’, ‘q’로 이루어진 문자열이 주어진다. 이 문자열을 거울에 비추면 어떤 문자열이 되는지 구하는 프로그램을 작성하라.
예를 들어, “bdppq”를 거울에 비추면 “pqqbd”처럼 나타날 것이다.
입력
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 ‘b’, ‘d’, ‘p’, ‘q’만으로 이루어진 하나의 문자열이 주어진다. 문자열의 길이는 1이상 1000이하이다.
출력
각 테스트 케이스마다 주어진 문자열을 거울에 비춘 문자열로 출력한다.
예제
입력
2
bdppq
qqqqpppbbd
출력
#1 pqqbd
#2 bddqqqpppp
My Sol
T = int(input())
for tc in range(T):
a = input()
c = ''
for t in a:
if t == 'p':
cp = 'q'
elif t == 'q':
cp = 'p'
elif t == 'b':
cp = 'd'
elif t == 'd':
cp = 'b'
c = cp + c
print(f'#{tc+1} {c}')
회문과 함께 상대되는 알파벳으로 바꿔주는 것이 까다로워 보이지만 상당히 간단히 풀리는 문제였다. 순서를 바꾸고 알파벳을 좌우대칭되는 상대 알파벳으로 바꾸는 과정을 한 번에 진행하기 위해 입력값의 처음부터 조회하여 각각의 알파벳이 무엇인지에 따라 판별하여 반대되는 순서로 이어붙여주면 되겠다.
결과
PASS
모범 답안
ref_dict = {"p":"q", "q":"p", "d":"b", "b":"d"}
T = int(input())
for t in range(1, T+1):
strings = input()
rs = ""
for s in strings:
rs = ref_dict[s] + rs
print(f"#{t}", rs)
동기의 코드인데, 딕셔너리를 사용하여 조건문의 여러 차례 조회 없이 깔끔하게 key를 조회해 value를 출력하는 식으로 작성하셨다. 실행시간 자체는 내 코드가 더 짧긴 하지만 p와 q 등의 관계를 딕셔너리를 이용하여 직관적으로 작성하였기 때문에 인상적이어서 가져와봤다.
댓글남기기