본문 바로가기
Algorithm/Programmers

[Programmers] Lv.0 / 문자열 계산하기 / Java

by unknownomad 2024. 6. 15.

문제

 

풀이

class Solution {
    public int solution(String my_string) {
        
        String[] formula = my_string.split(" ");
        int num1 = Integer.parseInt(formula[0]);
        int num2 = Integer.parseInt(formula[2]);
        
        int answer = num1;
        for(int i = 1; i < formula.length; i++) {
            if(formula[i].equals("+")) {
                answer += Integer.parseInt(formula[i + 1]);
            } else if(formula[i].equals("-")) {
                answer -= Integer.parseInt(formula[i + 1]);
            } else {
                continue;
            }
        }
        return answer;
    }
}
import java.util.Arrays;

class Solution {
    public int solution(String my_string) {
    	// 1st replcaeAll(): 음수로 치환
        // 2nd replaceAll(): + 찾는 regex, 양수로 치환
        // 예시) 3 - 1 + 2 ➡️ 3 -1 +2
        // split(" "): [3,-1,+2]
        // 연산을 제대로 치환하지 않으면(replaceAll(" ", "")), NumberFormatException 발생
        return Arrays.stream(
                my_string.replaceAll("- ", "-").replaceAll("[+] ", "").trim().split(" "))
            .mapToInt(Integer::parseInt)
            .sum();
    }
}

 

 

Integer.parseInt() & Integer.valueOf()

 

  • parseInt()는 int 값을 반환하고, valueOf()는 Integer 객체를 반환
  • parseInt()는 주로 기본 데이터 타입인 int를 다룰 때 사용되며, valueOf()는 Integer 객체를 다룰 때 사용
  • parseInt()는 주로 문자열을 숫자로 변환할 때 사용되며, valueOf()는 객체를 다룰 때 편리함

 

출처

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

댓글