[프로그래머스] Lv.0 OX퀴즈/옹알이 (Python)

seulzzang·2022년 10월 18일
0

코딩테스트 연습

목록 보기
31/44
post-thumbnail

프로그래머스에 0단계 문제가 생겼다!
그래서 이번주 스터디에서는 정답률이 낮은 두 문제를 풀었다😙


1. OX퀴즈

[프로그래머스] Lv.0 OX퀴즈

📍 풀이

def solution(quiz):
    answer = []
    # [연산자]는 + 와 - 중 하나입니다.
    for q in quiz:
        left, right = q.split('=')
        left = left.split()
        print(left)
        if left[1] == '+': # 더하기 연산
            if int(left[0]) + int(left[2]) == int(right):
                answer.append('O')
            else:
                answer.append('X')
        elif left[1] == '-': # 빼기 연산
            if int(left[0]) - int(left[2]) == int(right):
                answer.append('O')
            else:
                answer.append('X')
    return answer
  • split()을 사용하여 문자열을 나눠주고, 이를 int로 변환시켜 계산할 수 있는지의 여부를 물어보는 문제인 것 같았다.
  • '='을 기준으로 좌항, 우항을 나눠준 후에 left는 공백을 기준으로 나눠준다.
  • 이후 연산자가 있는 1번째 인덱스가 더하기 연산인지, 빼기 연산인지를 나누어 답이 맞다면 answer'O'를 담아주고, 아니라면 'X'를 담아준다.

📍 다른사람 풀이

def valid(equation):
    equation = equation.replace('=', '==')
    return eval(equation)

def solution(equations):
    return ["O" if valid(equation) else "X" for equation in equations]

📚 eval 함수

eval(expression) 형태로 사용하며, 매개변수로 받은 expression(식)을 문자열로 받아서 실행하는 함수이다.
비교연산자를 넣어도 가능하고, 간단한 덧셈도 가능하고, 1 그자체도 식이다.
위의 코드에서 valid('5+3=9')를 실행할 경우 False를 반환한다.
이를 이용하면 쉽게 TrueFalse를 구할 수 있어 코드가 훨씬 더 간결해진다.

2. 옹알이

[프로그래머스] Lv.0 옹알이

📍 풀이

def solution(babbling):
    answer = 0
    word = ['aya', 'ye', 'woo', 'ma']
    for b in babbling:
        for w in word:
            if w*2 not in b: # 중복되는 것이 없고
                if w in b: # w가 b에 있다면
                    b = b.replace(w, '') # 공백으로 치환한다
                    if len(b) == 0: # 그 값의 길이가 0이면
                        answer += 1 # 조카가 말할 수 있는 것
    return answer
  • 조건문을 어떻게 나눠주는가가 중요한 문제인 것 같았다.
  • 할 수 있는 옹알이의 수를 구하는 문제이므로 제일 상단 조건문에 반복하는 옹알이가 아닐 경우, 그 옹알이에 w가 있다면 이를 공백으로 치환하고, 그 길이가 0이라면 조카가 말할 수 있다는 것이니까 answer += 1을 해준다.

Lv.0 문제도 생각보다는 만만치 않다는 것? 하지만 그냥 뭘 이용하는지만 알면 금방 푸는 문제였다.

profile
중요한 것은 꺾이지 않는 마음

0개의 댓글