[프로그래머스] 코딩테스트 연습 -> 연습문제 -> 문자열을 정수로 바꾸기
https://school.programmers.co.kr/learn/courses/30/lessons/12925
해결 과정
우선 이 문제의 경우 3가지로 조건을 나누어야 한다.
1. 맨앞이 부호 "-" 일 때
2. 맨앞이 부호 "+" 일 때
3. 맨앞에 부호가 없을 때 (숫자로 시작할 때)
if (s.charAt(0) == '-') {
} else if (s.charAt(0) == '+') {
} else {
}
위와 같이 조건문에서는 s.charAt(0) 을 이용해 준다.
1. 맨앞이 부호 "-" 일 때
for (int i=1; i<s.length(); i++) {
answer +=(Integer.valueOf(s.charAt(i)) - 48) * Math.pow(10, s.length()-1-i);
}
이렇게 나타낼 수 있는데, 먼저 s.charAt(i)를 Integer형으로 바꿔주고 아스키 코드이므로 숫자 48을 빼주어 본래 숫자로 나타나게 해준다. 거기에 자릿수를 표현하기 위해 Math.pow(10, s.length()-1-i)를 이용하여 맞춰준다.
반복문을 돌면서 answer 에 각 자리수에 대해 자릿수를 맞춘 것을 누적하여 더해주면 된다.
이때, s.charAt(0)은 이미 부호 자리이므로 반복문의 i는 1부터 시작해야한다.
그리고 음수로 만들어 줘야 하므로 answer 에 (-1)을 곱하여 마무리 한다.
2. 맨앞이 부호 "+" 일 때
-> 마찬가지로 1번과 같이 수행하고, 대신 -1을 곱하는 부분이 필요없다.
3. 맨앞에 부호가 없을 때
-> 이때는 2번과 같이 수행하면 되지만, 대신 i는 0부터 시작하면된다.
소스 코드
class Solution {
public int solution(String s) {
int answer = 0;
if (s.charAt(0) == '-') {
for (int i=1; i<s.length(); i++) {
answer +=(Integer.valueOf(s.charAt(i)) - 48) * Math.pow(10, s.length()-1-i);
}
answer = (-1)*answer;
} else if (s.charAt(0) == '+') {
for (int i=1; i<s.length(); i++) {
answer +=(Integer.valueOf(s.charAt(i)) - 48) * Math.pow(10, s.length()-1-i);
}
} else {
for (int i=0; i<s.length(); i++) {
answer +=(Integer.valueOf(s.charAt(i)) - 48) * Math.pow(10, s.length()-1-i);
}
}
return answer;
}
}
'JAVA > Programmers' 카테고리의 다른 글
JAVA 프로그래머스 [하샤드 수] 자바 Lv.1 (0) | 2023.08.02 |
---|---|
JAVA 프로그래머스 [정수 내림차순으로 배치하기] 자바 Lv.1 (0) | 2023.08.01 |
JAVA 프로그래머스 [정수 제곱근 판별] 자바 Lv.1 (0) | 2023.08.01 |
JAVA 프로그래머스 [문자열 내 p와 y의 개수] 자바 Lv.1 (0) | 2023.08.01 |
JAVA 프로그래머스 [자연수 뒤집어 배열로 만들기] 자바 Lv.1 (3) | 2023.07.31 |
댓글