Coding Test/Programmers

[Lv.0] 문자열 계산하기 [프로그래머스_코딩테스트] [구현] [10분]

whawoo 2025. 6. 20. 11:32
반응형

🔍 문제 요약

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

 

프로그래머스

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

programmers.co.kr

+와 - 연산이 존재하는 수식이 공백으로 구분해서 문자열 my_string에 주어질 때 해당 수식의 결과값을 구하는 문제

🧠 나의 접근 방식과 시행착오

6분 정도 걸린 문제. string split을 공백을 기준으로 적용한 후 인덱스가 홀수인 경우와 짝수인 경우로 나누어 연산자와 인자로 구분시켜서 계산을 하였다.

/// <summary>
/// 문자열 계산하기
/// https://school.programmers.co.kr/learn/courses/30/lessons/120902
/// </summary>
public int solution(string my_string)
{
    // n + n ..., n - n ... 과 같은 형식으로 이루어진 my_string을 계산시키는 문제

    var arr = my_string.Split(' ');

    // 짝수 인덱스는 value 홀수 인덱스는 operator
    int value = int.Parse(arr[0]);
    string operation = string.Empty;

    for (int i = 1; i < arr.Length; i++)
    {
        if (i % 2 == 0)
        {
            var val = int.Parse(arr[i]);

            if (operation == "+")
            {
                value += val;
            }
            else if (operation == "-")
            {
                value -= val;
            }
        }
        else
        {
            operation = arr[i];
        }
    }

    return value;
}

✅ 풀이 코드

반복문을 연산자와 value까지 해서 하나의 묶음으로 보고 2개씩 증가시키는 방식의 피드백이 있었다. 추가로 연산자를 구분시 switch로 해서 깔끔하게 나누어서 했고 +와 - 외의 경우에도 대응이 편하게 하는 방향으로 코드가 나왔다.

public int solution(string my_string)
{
    var tokens = my_string.Split(' ');
    int result = int.Parse(tokens[0]);

    for (int i = 1; i < tokens.Length; i += 2)
    {
        string op = tokens[i];
        int nextVal = int.Parse(tokens[i + 1]);

        result = op switch
        {
            "+" => result + nextVal,
            "-" => result - nextVal,
            _ => result
        };
    }

    return result;
}

🔄 정리

string Split은 단골로 사용되는 기능이므로 잘 활용하면 좋다. 추가로 연산의 경우 2개씩 하나의 묶음이다라는 생각을 하면 좀 더 코드가 간결하게 짤 수 있는 장점이 있다는 것도 기억하자.

반응형