관리 메뉴

log.Sehee

TIL / 4/5 / 프로그래머스 - OX문제 본문

TLC - 5 ⛺/Today I Learn

TIL / 4/5 / 프로그래머스 - OX문제

Sehe_e 2023. 4. 6. 00:47

문제

 

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

프로그래머스의 OX문제 

 

quiz 리스트는 덧셈, 뺏셈 수식들이 'X (연산자) Y = Z'자열 배열이며, 연산자는 + 또는 - 이다.

연산 기호와 숫자 사이는 항상 하나의 공백이 존재한다.

음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않는다.

수식이 옳다면 "O",를 틀리다면 "X를 순서대로 담은 배열을 return해라.

 


시도

 

리스트 속 퀴즈는 문자열이다. for문을 돌려 원소 한 개씩 돌려 split('공백')으로 나눌 수 있을 것 같다.

나눈 뒤 [1]원소는 문자열인 연산자 + 또는 - 일테니 if 분기문으로 작성하면 될 것 같다.

quiz 배열 속 수식에 있는 숫자들은 정수처럼 보이지만 자료형이 문자형이니 전부 int()로 감싸서 계산해야한다.

 


해결

 

def solution(quiz):
	# 답안을 넣을 빈 리스트를 생성
    answer = []
    # quiz의 배열을 하나씩 꺼내 반복문을 돌린다
    for i in quiz:
    	# 배열의 공백을 기준으로 문자열을 나눠 새로운 리스트를 만든다
        num = i.split(' ')
        # num의 INDEX 1번이 '+'일 때 숫자열로 변환한 INDEX 0번 + 2번이 4번과 같다면 "O"를 추가
        if num[1] == '+':
            if int(num[0]) + int(num[2]) == int(num[4]): 
                answer.append('O')
            # 틀리다면 "X"를 추가    
            else: 
                answer.append('X')
        # num의 INDEX 1번이 '-'일 때 숫자열로 변환한 INDEX 0번 - 2번이 4번과 같다면 "O"를 추가 
        elif num[1] == '-':
            if int(num[0]) - int(num[2]) == int(num[4]): 
                answer.append('O')
            else: 
                answer.append('X')
    return answer
print(solution(quiz))

 


배운 점

 

제한사항에도 문제 풀이의 포인트가 나와있을 수 있다는 것을 깨달았다. 공백을 기준으로 split을 사용하는 것이 이 문제의 핵심이였고, 나머지는 기초적인 if문 사용이였기에 문제의 설명 길이에 겁먹었던 것 보다 쉽게 풀 수 있었다.

전에는 제한사항에 너무 얽매여 생각하느라 시간복잡도를 생각하지 않거나 수의 범위만을 생각했었는데 이번 문제를 통해 문제에 따라서 설명이든 제한사항이든 포인트를 캐치해내는 것이 중요하단 것을 다시 깨달았다.

 

 

 

 

Comments