반응형
12925번 문제
코딩테스트 연습 - 문자열을 정수로 바꾸기 | 프로그래머스 (programmers.co.kr)
풀이
- 생각
핵심은 맨앞의 문자는 '+', '-' 부호가 올 수 있다는 것
부호를 먼저 판별하고 남은 문자를 수로 변환하면 되겠다.
- 1번 풀이
public int solution(String s) {
char first = s.charAt(0);
boolean minus = (first == '-') ? true : false;
char[] chAry = s.toCharArray();
int val = 0, len = chAry.length;
int i = (first == '-' || first == '+') ? 1 : 0;
while(i < len) {
val = (chAry[i++] - 48) + (val * 10);
}
return minus ? -val : val;
}
✅ 부호를 먼저 판별하고 부호를 제외한 남은 문자에 대하여 반복 수행
- 이 문제의 샘플 데이터는 '+' 부호가 나올 수도 있고 안 나올 수도 있다. 그러므로 두 가지 경우의 수 모두 생각해야 한다. 음수는 사전에 확인해야 하므로 첫 문자가 '-' 인지 확인하여 기억해둔다.
✅ 문자를 숫자로 바꾸기
- '0' = 48 이므로 '0' 을 숫자 0으로 변환하기 위해서는 '0' - 48 = 0
ex) '1' - 48 = 49 - 48 = 1
✅ 자릿수 정하기
수가 늘어남에 따라 자릿수를 하나씩 증가시킨다.
ex) 1542
val | chAry[i] - 48 | val * 10 | 합 |
0 | 1 | 0 | 1 |
1 | 5 | 10 | 15 |
15 | 4 | 150 | 154 |
154 | 2 | 1540 | 1542 |
- 2번 풀이
public int solution(String s) {
return Integer.parseInt(s);
}
✅ Integer.parseInt(String s)
- 문자열 s를 10진수 정수로 반환한다.
- 메소드 내부는 예외처리를 제외하면 1번 풀이와 비슷하다.
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - 하샤드 수 java (0) | 2022.01.08 |
---|---|
프로그래머스 - 문자열 다루기 기본 java (0) | 2022.01.04 |
프로그래머스 - 약수의 합 java :: 12928 (0) | 2022.01.02 |
프로그래머스 - 자릿수 더하기 java (0) | 2021.12.28 |
프로그래머스 - 정수 내림차순으로 배치하기 java (0) | 2021.12.27 |