본문 바로가기
IT/algorithm

[programmers] '문자열 계산하기' 문제 해설 및 정답코드

by Echinacea 2025. 3. 24.
반응형



문제 출처

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

✅ 문제 설명

주어진 문자열 my_string은 "3 + 5" 같은 형식의 수식입니다.

  • 문자열에 포함된 연산자는 +(더하기), -(빼기)만 존재합니다.
  • my_string을 계산한 결과값을 반환해야 합니다.
  • 숫자와 연산자는 공백 하나로 구분되어 있으며, 잘못된 수식은 주어지지 않습니다.

 

 

🔍 입출력 예시

my_string 결과

"3 + 4" 7
"10 - 2" 8
"15 + 5 - 3" 17

 

 

🛠 문제 해결 과정

 

1️⃣ 문자열을 수식으로 변환

  1. 주어진 my_string을 공백을 기준으로 나눈다.
  2. 연산자와 숫자를 순차적으로 처리하면서 계산을 진행한다.
  3. +일 경우 더하고, -일 경우 빼면서 최종 결과를 구한다.

 

예제 1: "3 + 4"

  1. 공백을 기준으로 나누면 ['3', '+', '4']
  2. 첫 번째 숫자 3을 결과값으로 저장
  3. + 연산자를 만나면 다음 숫자를 더함 → 3 + 4 = 7

🔹 결과: 7

 

예제 2: "15 + 5 - 3"

  1. 공백을 기준으로 나누면 ['15', '+', '5', '-', '3']
  2. 첫 번째 숫자 15를 결과값으로 저장
  3. + 5 연산 → 15 + 5 = 20
  4. - 3 연산 → 20 - 3 = 17

🔹 결과: 17


 

 

🔥 최적화된 해결 방법

def solution(my_string):
    tokens = my_string.split()  # 공백을 기준으로 숫자와 연산자를 분리
    result = int(tokens[0])  # 첫 번째 숫자를 결과값으로 설정
    
    for i in range(1, len(tokens), 2):  # 연산자와 숫자를 순차적으로 처리
        operator = tokens[i]
        number = int(tokens[i + 1])
        
        if operator == '+':
            result += number
        elif operator == '-':
            result -= number
    
    return result

 

 

📌 코드 설명

  1. split()을 사용하여 공백을 기준으로 수식을 나눕니다.
  2. 첫 번째 숫자를 result에 저장합니다.
  3. 짝수 인덱스는 연산자, 홀수 인덱스는 숫자이므로 for문을 사용해 2칸씩 이동하며 연산을 수행합니다.
  4. +이면 더하고, -이면 빼면서 최종 값을 반환합니다.

 

 

📌 실행 예제 및 결과

print(solution("3 + 4"))  # 7
print(solution("10 - 2"))  # 8
print(solution("15 + 5 - 3"))  # 17

 

출력 결과:

7
8
17

 

 

 

 

🔑 핵심 정리

개념 설명

문자열 분리 split()을 사용하여 공백을 기준으로 연산자와 숫자를 분리
연산자 순차 처리 +이면 더하고, -이면 빼면서 최종 값을 구함
반복문 활용 for문을 사용해 연산자-숫자 쌍을 처리
시간 복잡도 O(N), 문자열을 한 번 순회하며 계산

 

반응형

댓글