개발일기

#7 프로그래머스 카드뭉치/암호해독/대문자, 소문자 바꾸기/가위바위보/세균증식 본문

오류 및 알고리즘정리본

#7 프로그래머스 카드뭉치/암호해독/대문자, 소문자 바꾸기/가위바위보/세균증식

츄98 2023. 4. 21. 02:07

1. 카드 뭉치

 

아이디어: 카드뭉치에서 원하는 순서의 단어가 있으면  pop을 해서 전부 다  pop이 되면 YES, 그렇지 않으면 No가 return하도록 하자..!

 

# 카드 뭉치
def solution(cards1, cards2, goal):
    for g in goal:
        if cards1 and cards1[0] == g:
            cards1.pop(0)
        elif cards2 and cards2[0] == g:
            cards2.pop(0)
        else:
            return "No"
    return "Yes"

# 다른 사람 풀이
def solution(cards1, cards2, goal):
    for g in goal:
        if len(cards1) > 0 and g == cards1[0]:
            cards1.pop(0)
        elif len(cards2) >0 and g == cards2[0]:
            cards2.pop(0)
        else:
            return "No"
    return "Yes"

def solution(cards1, cards2, goal):
    answer = 'No'
    cards1_subset = []
    cards2_subset = []
    for w in goal:
        if w in cards1:
            cards1_subset.append(w)
        elif w in cards2:
            cards2_subset.append(w)
    if cards1_subset == cards1[:len(cards1_subset)] and cards2_subset == cards2[:len(cards2_subset)]:
        answer = 'Yes'

    return answer

 

 

2. 암호해독

 

# 암호해독
def solution(cipher, code):
    cipher_list = list(cipher)
    return ''.join(cipher_list[code-1::code])

# 다른 사람 풀이
def solution(cipher, code):
    answer = cipher[code-1::code] 
    # 문자열 인덱싱되는 거 까먹지 말자구~~
    return answer

 

 

3. 대문자, 소문자 바꾸기

문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요

 

# 대문자 소문자
def solution(my_string):
    result = []
    for string in my_string:
        if string == string.upper():
            result.append(string.lower())
            # result += string.lower()과 같다.
        else:
            result.append(string.upper())
    return ''.join(result)
    
    
# 다른 사람 풀이
def solution(my_string):
    return my_string.swapcase()

def solution(my_string):
    answer = ''
    for i in my_string:
        if i.isupper():
            answer+=i.lower()
        else:
            answer+=i.upper()
    return answer

 

 

 

4. 가위바위보

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

 

# 가위바위보
def solution(rsp):
    answer = ''
    for i in rsp:
        if i == '2':
            answer+='0'
        elif i == '0':
            answer+='5'
        else:
            answer+='2'
    return answer

# 다른 사람 풀이
def solution(rsp):
    d = {'0':'5','2':'0','5':'2'}
    return ''.join(d[i] for i in rsp)

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문 안 쓰고 str만 써서 속도 빠름

def solution(rsp):
    return rsp.translate(str.maketrans('025', '502'))
# maketrans???

 

 

5. 세균증식

어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.

 

# 세균증식
def solution(n, t):
    return n*(2**(t))

# 다른 사람 풀이
def solution(n, t):
    return n << t # 비프시프트, 비트 연산!!!