View

문제 설명

가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.


제한사항
  • 0 < rsp의 길이 ≤ 100
  • rsp와 길이가 같은 문자열을 return 합니다.
  • rsp는 숫자 0, 2, 5로 이루어져 있습니다.

입출력 예rspresult
"2" "0"
"205" "052"

입출력 예 설명

입출력 예 #1

  • "2"는 가위이므로 바위를 나타내는 "0"을 return 합니다.

입출력 예 #2

  • "205"는 순서대로 가위, 바위, 보이고 이를 모두 이기려면 바위, 보, 가위를 순서대로 내야하므로 “052”를 return합니다.

나의 풀이

def solution(rsp):
    r = []
    for i in rsp:
        if  i == "2":
            r.append("0")
        elif  i == "0":
            r.append("5")
        elif  i == "5":
            r.append("2")
    return ''.join(r)

다른 풀이 1

dictionary를 사용하여, 해당 키의 값을 가져오는 방법을 사용하였다. 훨씬 간결해보인다.

def solution(rsp):
    d = {'0':'5','2':'0','5':'2'}
    return ''.join(d[i] for i in rsp)

다른 풀이 2

처음접근했던 방법이 replace를 사용하는 것이었는데, 숫자로 바로 바꾸어 버리면, 이후의 코드에 의해서 값이 바뀌어버리는 현상이 생겼다.

아래와 같이 원하는 값은 숫자대신 문자로 먼저 바꾸어 놓고, 문자를 숫자로 다시 바꾸는 방법을 사용할 수 도 있겠다.

def solution(rsp):
    rsp =rsp.replace('2','s')
    rsp =rsp.replace('5','p')
    rsp =rsp.replace('0','r')
    rsp =rsp.replace('r','5')
    rsp =rsp.replace('s','0')
    rsp =rsp.replace('p','2')
    return rsp
Share Link
reply
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31