문제
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
'🫧 코테 : CodingTest' 카테고리의 다른 글
[프로그래머스] Java : 잘라서 배열로 저장하기(substring) (0) | 2024.03.28 |
---|---|
[프로그래머스] Java : 숫자 찾기(ASCII) (0) | 2024.03.22 |
[프로그래머스] Java : 약수 구하기(copyOf) (0) | 2024.03.20 |
[프로그래머스] Java : 한 번만 등장한 문자 (0) | 2024.03.18 |
[프로그래머스] Java : 가까운 수 (0) | 2024.03.17 |