코딩,해볼까

07.17 - 18. 프로그래머스 : 배열 두 배 만들기, 배열 뒤집기, 문자열 뒤집기, 가위 바위 보 본문

Back/TIL

07.17 - 18. 프로그래머스 : 배열 두 배 만들기, 배열 뒤집기, 문자열 뒤집기, 가위 바위 보

떠굥 2023. 7. 18. 15:50

문제링크

배열 두 배 만들기

배열 뒤집기

문자열 뒤집기

가위 바위 보

 

< 배열 뒤집기, 문자열 뒤집기 >

1. 나의 풀이

def solution(num_list):
        
    return num_list [::-1]

리스트 슬라이싱.  iterable 을 슬라이스 하는 방법 중 시퀀스 [ 시작:중지:단계 ] (시작 값 : 끝 값 : 배수) 와 같은 방법으로 사용할 수 있는데, ::-1 은 -1 (음수) 이 있기 때문에 맨 끝부터 순서대로 나열하라는 뜻이 된다.

배열 뒤집기와 문자 뒤집기 모두 이 풀이로 해결할 수 있다.

def solution(my_string):
    answer = ''
    my_list = list(my_string)
    my_list.reverse()
    answer = ''.join(my_list)

    return answer

reverse를 사용해서도 풀어봤다.

 

 

2. 다른 사람의 풀이

def solution(num_list):
    result =[]
    while(num_list):
        result.append(num_list.pop())
    return result

pop 함수를 사용해보고 싶었는데, 풀이가 있었다.

pop()은 리스트의 맨 마지막 요소를 리턴하고 그 요소는 삭제한다. 그러므로 pop해서 새로운 배열에 append해주는 풀이방법이다.

 

< 가위 바위 보 >

1. 나의 풀이

def solution(rsp):
    answer = ''

    for i in rsp:

        if i == '2':
            answer = answer + '0'
        elif i == '0':
            answer = answer + '5'
        elif i == '5':
            answer = answer + '2'

    return answer

2는 0, 0은 5, 5는 2로 짝이 정해져 있는 이 문제. 딕셔너리를 이용하면 더 간단하게 풀 수 있을 것 같았다.

 

2. 팀원과의 풀이

def solution(rsp):
    answer = ''
    dic = {'2':'0', '0':'5', '5':'2'}
    
    # rsp == dic key값
    for i in rsp:
        answer += dic[i] #value
            
    return answer

함수로 들어오는 rsp값으로 딕셔너리에 있는 key 값을 부르면 결과적으로 value 값이 도출되기 떄문에 아주 간편하게 풀 수 있는 방법이었다.

 

3. 다른사람의 풀이

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

우리의 두 번쨰 풀이방법과 아주 동일하지만 return에서 for문을 더욱 간결하게 표현하였다.

 

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

for문을 쓰지 않는 너무 기상천외한 방법이다. 숫자가 겹치기 때문에 숫자 > 문자 > 숫자 로 replace를 진행했다. 너무 빠르고 완벽한 풀이. 나도 이런 풀이를 적어보고 싶다.

Comments