Solution 1) 내 풀이
class Solution {
public static boolean checkNum(String[] tmp, int i) {
boolean isNum = true;
try {
Integer.parseInt(tmp[i]);
return true;
} catch (NumberFormatException e) {
return false;
}
}
public int solution(String my_string) {
String[] tmp = my_string.split(" ");
int answer = 0;
boolean isMinus = false;
for (int i = 0; i < tmp.length; i++) {
if (!checkNum(tmp, i)) {
isMinus = tmp[i].equals("-") ? true : false;
}
if (checkNum(tmp, i) && !isMinus) {
answer += Integer.parseInt(tmp[i]);
} else if (checkNum(tmp, i) && isMinus) {
answer -= Integer.parseInt(tmp[i]);
}
}
return answer;
}
}
코드 및 문제 리뷰
문자열 안의 연산을 풀어내 반환하는 문제이다. 여기서 문제는 연산식이 int형의 배열이 아닌 문자열안에 "5 + 9"와 같이 들어있다는 것이다. 숫자와 연산자는 띄어쓰기로 구분 돼 있다.
물론 이번 문제는 숫자 두개와 연산자 한개로만 이뤄져 있어 비교적 단순하게도 풀 수 있었다.
그러나 이보다 조금 복잡한 문제는 연산해야할 수가 음수인 경우도 있기에 checkNum 메소드를 만들어 사용해 봤다.
그 안에는 try-catch문을 사용해 Integer.parseInt가 안되는 요소는 false를 반환하게 만들어 수를 더하거나 빼는 것이 아닌,
boolean형의 isMinus를 바꿔주는데 사용하고 숫자인 경우(Integer.parseInt가 되는 경우) true를 반환해 수를 더하거나 빼게 만들었다.
굳이굳이 다른 메소드까지 만들며 풀었기에 좋은 풀이식은 아닌듯 하지만 예외처리까지 해보는 등
많은 연습이 됐던 문제였다.
'연습문제 > 프로그래머스, 입문' 카테고리의 다른 글
[프로그래머스 입문_java] 잘라서 배열로 저장하기 (0) | 2023.11.04 |
---|---|
[프로그래머스 입문_java] 7의 개수 (1) | 2023.11.04 |
[프로그래머스 입문_java] 가까운 수 (0) | 2023.10.30 |
[프로그래머스 입문_java] 중복된 문자 제거 (0) | 2023.10.29 |
[프로그래머스 입문_java] 컨트롤 제트 (1) | 2023.10.29 |