포시코딩

[프로그래머스][Lv.0] 가위 바위 보 본문

자료구조알고리즘/문제풀이

[프로그래머스][Lv.0] 가위 바위 보

포시 2023. 1. 2. 16:33
728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/120839

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내 풀이

def solution(rsp):
    win = ['5', None, '0', None, None, '2']
    return ''.join([win[int(x)] for x in rsp])

if문이 세로로 길게 생기는 것을 극혐해서 여러 방법을 찾다가

Javascript에서 

let arr = [];
arr[2] = 0
arr[0] = 5
arr[5] = 2
console.log(arr[2])
console.log(arr[0])
console.log(arr[5])

이렇게 하면 지정한 index에 값이 매겨지고 그 외 인덱스에는 <empty item>이 들어오던걸 생각해

파이썬에서는 똑같이는 되지 않아 직접 win list를 만들어주었고 빈 값에 대해 None으로 명시한 후

for문을 돌아 해당하는 index의 값을 리턴해 풀었다.

 

다른 풀이 A

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

list에서 생각이 그쳤는데 dictionary로 위와같이 만든다면 값을 찾을 때 int(x)를 하지 않아도 되고

무엇보다 가위바위보 뿐만 아니라 응용되어

많은 수의 숫자에 대해 대응하는 값을 제시할 때

None에 대한 index를 생략할 수 있는점이 좋아보인다.

 

다른 풀이 B

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

2, 5, 0에 대해 다른 문자로 바꿔준 후 다시 대응하는 문자로 바꿔주는 방법인데

단순하지만 효과적이고 빠른 방법이다.

728x90