ALGORITHM/PYTHON

백준 BAEKJOON 4583번 거울상 [PYTHON/파이썬]

칼코
반응형

백준 BAEKJOON 4583번 거울상 [PYTHON/파이썬]


<문제 출처>

https://www.acmicpc.net/problem/4583

 

4583번: 거울상

소문자 b와 d나 p와 q는 서로 거울상 관계이다. 또한 i,o,v,w와 x는 모두 자신과 거울상 관계이다. 이 외에도 몇 가지 거울상 관계인 문자들이 존재하지만, 이 문제에서는 위에서 언급한 문자들만 거

www.acmicpc.net

<풀이>

입력받은 문자열을 뒤집어서 저장 후

거울상 관계에 있는 문자면 result 값에 거울에 반사된 문자를 넣어줬다.

 

풀다보니 if~elif 문이 깔끔하지 못하게 길어졌는데

코드를 줄이기 위해 좀 더 머리를 굴려봐야겠다.

 

mirror1 = ['i', 'o', 'v', 'w', 'x']	# 자신과 거울상 관계
mirror2 = ['b', 'd', 'p', 'q']	# 서로 거울상 관계

while 1 :
    s = input()[::-1]	# 문자열 뒤집어서 받기
    result = ''	# 결과값
    
    if s == '#' :
        break

    for i in range(len(s)) :
        if s[i] in mirror1 :
            result += s[i]
        elif s[i] in mirror2 :
            if s[i] == 'b' :
                result += 'd'
            elif s[i] == 'd' :
                result += 'b'
            elif s[i] == 'p' :
                result += 'q'
            elif s[i] == 'q' :
                result += 'p'
    
    if len(result) == len(s) :
        print(result)
    else :
        print('INVALID')
반응형