본문 바로가기
🫧 코테 : CodingTest

[프로그래머스] Java : 문자열 계산하기

by 예옹이 2024. 3. 20.

 

문제

my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.

 

입출력 예

my_string result
"3 + 4" 7

 

 


 

 

 

되게 단순한 문제인줄 알았는데 자꾸 실패 케이스가 생겨서 당황했습니다..

그래서 문제를 다시 읽어보니

 

            my_string에는 연산자가 적어도 하나 포함되어 있습니다.

 

라는 조건이 있었습니다.

my_string이 "4 + 16 - 38 + 7"일 수도 있다는 소리죠.

 

 

 

이번 문제는 세단계로 나눠서 풀면 됩니다.

1. my_string split해서 배열에 넣어주기
2. 첫번째 배열인 숫자 더해주기
3. 배열 값이 부호일 경우 판별하고 계산해주기

 

 

 

1. my_string split해서 배열에 넣어주기

 String[] nums = my_string.split(" ");

 

 

 

2. 첫번째 배열인 숫자 더해주기

if(i==0){
	answer += Integer.parseInt(nums[i]);
}

 

앞서 만든 nums배열의 첫번째 원소를 answer에 더해주고 시작합니다.

 

 

 

3. 배열 값이 부호일 경우 판별하고 계산해주기

if(i != 0 && i%2 != 0){
	if(nums[i].equals("+")){
    	answer += Integer.parseInt(nums[i+1]);
        i++;
    }
    else{
    	answer -= Integer.parseInt(nums[i+1]);
        i++;
    }
}

 

배열 값이 부호일 경우는 (i != 0 && i%2 != 0) 이때밖에 없습니다.

'0번째 인덱스를 제외하고, 홀수번째 인덱스일때' 라는 뜻입니다.

 

이때 부호가 +라면,

answer에 부호 다음에 위치한 숫자를 더해줍니다. 더해주었으니 for문에서 제외시키라고 i++를 해줍니다.

 

부호가 -일때도 같습니다.

 

 

 


 

 

 

코드

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        String[] nums = my_string.split(" ");
        for(int i=0; i<nums.length; i++){
            if(i==0){
                answer += Integer.parseInt(nums[i]);
            }
            
            if(i != 0 && i%2 != 0){
                if(nums[i].equals("+")){
                    answer += Integer.parseInt(nums[i+1]);
                    i++;
                }
                else{
                    answer -= Integer.parseInt(nums[i+1]);
                    i++;
                }
            }
        }
        return answer;
    }
}

 

 

 

 

 

 

제가 작성한 코드는 여기에서 확인하실 수 있습니다.

https://github.com/eonwy/programmers

 

GitHub - eonwy/programmers: 🔎 coding-test (programmers) 🔍

🔎 coding-test (programmers) 🔍. Contribute to eonwy/programmers development by creating an account on GitHub.

github.com