오늘의 TIL: 문자열 기반 수식 계산 문제 풀이 정리

문제 링크

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

문제 개요

my_string이라는 문자열로 주어진 간단한 수식을 계산하는 문제입니다. 수식에는 정수와 +, - 연산자만 포함되며, 계산 결과를 반환해야 합니다.

해결 과정

  1. 문자열 분리
    • 문자열을 공백(split())으로 분리하여 숫자와 연산자를 나눔.
    • 이렇게 하면 숫자와 연산자가 각각 리스트의 요소로 저장됩니다.
  2. 초기 값 설정
    • 첫 번째 숫자를 계산 결과를 저장할 변수 rlt에 초기화.
    • 이후 for 반복문을 통해 연산자를 기준으로 숫자를 더하거나 뺍니다.
  3. 반복문으로 연산 처리
    • 반복문은 연산자와 숫자 쌍을 순차적으로 접근합니다.
    • + 연산자를 만나면 숫자를 더하고, - 연산자를 만나면 숫자를 뺍니다.

놓쳤던 부분과 개선

실수 포인트:
처음에는 문자열로 숫자를 처리할 때 두 자리 이상의 숫자를 한 자리씩 나누어 처리한다고 착각함.

  • 예를 들어, "10 + 5"를 처리할 때 10을 1과 0으로 잘못 이해하여 계산 결과가 틀렸습니다.

개선 방법:

  • 문자열의 split()은 공백을 기준으로 전체 숫자를 하나의 요소로 인식하므로, 이를 int()로 바로 변환하면 해결됩니다.

최종 코드

def solution(my_string):
    # 문자열을 공백 기준으로 분리
    new_string = my_string.split()
    rlt = int(new_string[0])  # 첫 번째 숫자를 초기 값으로 설정
    
    # 연산자와 다음 숫자를 반복적으로 처리
    for i in range(1, len(new_string), 2):
        num = int(new_string[i + 1])  # 다음 숫자
        operator = new_string[i]      # 현재 연산자(연산자가 문자열 내 홀수에 위치)
        
        # 연산자에 따라 계산
        if operator == '+':
            rlt += num
        elif operator == '-':
            rlt -= num
            
    return rlt

핵심 학습 포인트

  1. 문자열을 리스트로 분리
    split() 메서드를 사용해 문자열에서 공백을 기준으로 숫자와 연산자를 분리.
  2. 연산자에 따른 조건 처리
    if 문을 사용해 +, -에 따른 계산 로직을 작성.
  3. 디버깅 팁
    • 두 자리 이상의 숫자 처리: 문자열이 아니라 정수형으로 변환해 계산해야 정확한 결과를 얻을 수 있음.
    • 문제의 조건과 입력 예시를 꼼꼼히 확인해 실수 방지하기. 

배운 점

  • 수식을 문자열로 처리할 때는 공백이나 구분자를 기준으로 데이터를 정확히 분리하는 것이 중요하다.
  • 특히, 입력 형식에 따른 예외 상황을 생각하며 디버깅을 하는 연습이 필요하다.

추가 학습

  • 문자열 처리와 관련된 함수(split, join, strip)를 더 익히고 활용법을 체계적으로 정리해 두기.
  • 다양한 연산자와 숫자 형식이 포함된 수식 처리로 확장 학습하기.

+ Recent posts