-
[프로그래머스] 문자열 계산하기(C#)2024년 08월 10일
- 유니얼
-
작성자
-
2024.08.10.:15
728x90안녕하세요! 오늘은 코딩테스트 문제 중 하나인 "문자열 계산하기" 문제를 해결하는 방법에 대해 설명하려고 합니다. 이 문제는 특정 형식으로 주어진 수식 문자열을 해석하여 올바른 결과를 도출하는 것입니다. 수식은 항상 공백으로 구분된 숫자와 +, - 연산자로 구성되어 있으며, 문자열의 시작과 끝에는 공백이 없습니다. 예를 들어, "3 + 5"라는 문자열이 주어졌을 때, 이 수식을 계산하여 8을 반환해야 합니다.
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/120902
문제 설명
- 제한사항:
- 연산자는 +와 -만 존재합니다.
- 문자열의 시작과 끝에는 공백이 없습니다.
- 문자열에는 잘못된 수식이 포함되지 않습니다.
- 수식 내 숫자는 1 이상 20,000 이하의 자연수입니다.
- 수식의 중간 계산 값은 -100,000 이상 100,000 이하입니다.
이러한 제약 조건을 통해 우리는 수식이 비교적 간단하고, 정해진 형식으로 주어진다는 것을 알 수 있습니다. 이를 기반으로, 문자열을 파싱하고, 각 연산자를 처리하는 방법을 생각할 수 있습니다.
문제 해결 접근법
- 문자열 분할: 공백(' ')을 기준으로 문자열을 나누어 피연산자와 연산자를 분리합니다.
- 초기값 설정: 첫 번째 숫자를 결과값 answer에 할당합니다.
- 수식 처리: 문자열 배열을 순회하면서 + 또는 - 연산자를 만나면 그 다음 숫자를 가져와 연산을 수행합니다.
- 최종 결과 반환: 모든 연산을 처리한 후 최종 계산된 값을 반환합니다.
코드 구현
위 접근법을 바탕으로, 코드를 작성하면 다음과 같습니다:
using System; public class Solution { public int solution(string my_string) { int answer = 0; int temp = 0; // 공백을 기준으로 문자열을 분할 string[] arr = my_string.Split(' '); // 첫 번째 숫자를 초기값으로 설정 answer = int.Parse(arr[0]); // 연산자와 그 다음 숫자를 처리 for(int i = 1; i < arr.Length - 1; i++) { if(arr[i] == "+") { temp = int.Parse(arr[i + 1]); answer += temp; } else if(arr[i] == "-") { temp = int.Parse(arr[i + 1]); answer -= temp; } } return answer; } }
코드 설명
- 문자열 분할: my_string.Split(' ')을 사용하여 문자열을 배열로 분할합니다. 예를 들어, "3 + 4"는 ["3", "+", "4"]로 나뉩니다.
- 초기값 설정: 배열의 첫 번째 요소를 int.Parse()를 사용해 정수로 변환하고, answer에 할당합니다.
- 연산 처리: for문을 사용해 연산자를 만나면, 그 다음 숫자를 가져와 현재 answer에 더하거나 빼줍니다.
- 결과 반환: 모든 연산이 끝나면 최종 결과를 반환합니다.
결론
이 문제는 간단한 문자열 처리와 기본적인 산술 연산을 이해하고 활용하는 방법을 묻습니다. Split 함수로 문자열을 나누고, 적절한 조건문을 사용해 각 연산을 수행하는 방식으로 해결할 수 있습니다. 이 접근법은 주어진 제한사항을 충분히 만족하며, 문제를 효율적으로 해결할 수 있습니다.
반응형다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드
받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이
감지되어도 모달 창이 표시되지 않습니다.)