Stay Hungry Stay Foolish

SWEA

[SWEA] 10804. 문자열의 거울상 (Python/D3)

dev스카이 2024. 10. 22. 12:51

[문제 링크] 👇

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


 

풀이

단순 구현

  • b ➜ d로 변경
  • d ➜ b로 변경
  • p ➜ q로 변경
  • q ➜ p로 변경

변경한 후 문자열을 뒤집는다.

 

 

※ 문자열을 변경할 수 있는 replace() 메서드도 있다. replace()를 사용해도 되지만, 코드가 번잡해지니 패스한다.

 

 

Solution

test_case = int(input())
for tc in range(1, test_case + 1):
    word = input()
    result = ""
    for i in word:
        if i == "b":
            result += "d"
        elif i == "d":
            result += "b"
        elif i == "q":
            result += "p"
        else:
            result += "q"

    print("#%d %s" %(tc, result[::-1]))

 

 

👩‍💻 회고

처음엔 replace() 메서드를 사용하려고 했다. replace()로 풀다가 좀 이상한 느낌이 들어서 확인해보니 작동이 제대로 되지 않았다. 아래와 같이 풀이했었는데,,

word = 'qpp'
word = word.replace('p', 'q')  # 'p'를 모두 'q'로 변경 -> 'qqq'
word = word.replace('q', 'p')  # 'q'를 모두 'p'로 변경 -> 'ppp'

 

이렇게 되면 처음에 p를 q로 바꾸고 나서, 그 다음에 q를 다시 p로 바꿔버리므로 결국 'ppp'가 되어버린다.

 

 

해결 방법 (임시 문자 사용)

word = 'qpp'
word = word.replace('p', 'temp')  # 'p'를 임시 문자로 변경 -> 'qtemptemp'
word = word.replace('q', 'p')     # 'q'를 'p'로 변경 -> 'ptempp'
word = word.replace('temp', 'q')  # 임시 문자를 'q'로 변경 -> 'pqq'
print(word)

 

해결 방법은 임시 문자를 사용하여 푸는 것인데, 4개의 문자를 다 변경해야 하므로 번거롭다는 것이다. 

다음에 적절한 문제가 나올 때 사용하는 것이 좋겠다.

 

 

[파이썬 replace() 메서드 설명] 👉 https://dev-cloud.tistory.com/329