반응형
🔐 문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/12925
🔐 문제 분석
Integer.parseInt()를 활용하면 부호까지 알아서 변환시켜준다.
public static int parseInt(String s, int radix)
throws NumberFormatException
{
/*
* WARNING: This method may be invoked early during VM initialization
* before IntegerCache is initialized. Care must be taken to not use
* the valueOf method.
*/
if (s == null) {
throw new NumberFormatException("null");
}
if (radix < Character.MIN_RADIX) {
throw new NumberFormatException("radix " + radix +
" less than Character.MIN_RADIX");
}
if (radix > Character.MAX_RADIX) {
throw new NumberFormatException("radix " + radix +
" greater than Character.MAX_RADIX");
}
boolean negative = false;
int i = 0, len = s.length();
int limit = -Integer.MAX_VALUE;
if (len > 0) {
char firstChar = s.charAt(0);
if (firstChar < '0') { // Possible leading "+" or "-"
if (firstChar == '-') {
negative = true;
limit = Integer.MIN_VALUE;
} else if (firstChar != '+') {
throw NumberFormatException.forInputString(s);
}
if (len == 1) { // Cannot have lone "+" or "-"
throw NumberFormatException.forInputString(s);
}
i++;
}
int multmin = limit / radix;
int result = 0;
while (i < len) {
// Accumulating negatively avoids surprises near MAX_VALUE
int digit = Character.digit(s.charAt(i++), radix);
if (digit < 0 || result < multmin) {
throw NumberFormatException.forInputString(s);
}
result *= radix;
if (result < limit + digit) {
throw NumberFormatException.forInputString(s);
}
result -= digit;
}
return negative ? result : -result;
} else {
throw NumberFormatException.forInputString(s);
}
}
🔐 문제 풀이
class Solution {
public int solution(String s) {
return Integer.parseInt(s);
}
}
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스] Lv1. 하샤드 수 (0) | 2023.06.02 |
---|---|
[프로그래머스] Lv1. 정수 내림차순으로 배치하기 (0) | 2023.06.02 |
[프로그래머스] Lv1. 문자열 내 p와 y의 개수 (0) | 2023.06.02 |
[프로그래머스] Lv1. 정수 제곱근 판별 (0) | 2023.06.01 |
[프로그래머스] Lv1. 자연수 뒤집어 배열로 만들기 (0) | 2023.06.01 |