반응형
🔍 문제 요약
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개씩 하나의 묶음이다라는 생각을 하면 좀 더 코드가 간결하게 짤 수 있는 장점이 있다는 것도 기억하자.
반응형
'Coding Test > Programmers' 카테고리의 다른 글
[Lv.0] 대문자와 소문자 [프로그래머스_코딩테스트] [문자열] [10분] (0) | 2025.06.23 |
---|---|
[Lv.0] 최댓값 만들기(1) [프로그래머스_코딩테스트] [정렬, 수학] [10분] (0) | 2025.06.22 |
[Lv.2] 기능개발 [프로그래머스_코딩테스트] [큐, 시뮬레이션] [35분] (0) | 2025.06.20 |
[Lv.2] 배달 [프로그래머스_코딩테스트] [다익스트라, 그래프] [40분] [Summer/Winter Coding(~2018)] (0) | 2025.06.19 |
[Lv.1] 가운데 글자 가져오기 [프로그래머스_코딩테스트] [문자열] [10분] (2) | 2025.06.19 |