코딩 테스트
[프로그래머스] (Lv.1) 문자열을 정수로 바꾸기 *
ImKDM
2022. 8. 31. 23:26
728x90
문제
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
- 출력 예시 -
예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
정답 코드
< 내 정답 코드 >
class Solution {
public int solution(String s) {
return Integer.parseInt(s);
}
}
< 타인 답변 코드 >
class Solution {
static int solution(String str) {
int result = 0;
boolean sign = true;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch == '-') {
sign = false;
} else if (ch != '+') {
result = result * 10 + (ch - '0'); // 이 알고리즘의 핵심이다!!!
}
}
return (sign == false ? -1 : 1) * result;
}
}
이것을 주의하자!
- String 객체를 int 형으로 바꿔주는 메서드인 Integer.parseInt( ) 메서드를 사용했다.
- 하지만, API를 사용하는 건 알고리즘 공부에 도움이 안된다. 실제 String이 int 가 되는지 확인해보면 다음과 같은 논리로 흐른다.
(1) 문자열 맨 앞에 '부호' 가 있는지 확인한다. 부호가 있을시 boolean 형으로 저장 후 마지막에 대입한다.
(2) 문자열을 charAt( ) 메서드로 앞에서부터 하나씩 꺼낸다. 그리고 int 형 변수에 저장한다.
: 높은 자리부터 저장하기 때문에 x 10 을 한다. 변수 초기값이 0 이니 10을 곱해도 일의 자리로
저장될 것이고, 이후 하나씩 꺼낼 때마다 10을 곱하기 때문에 자릿수가 올라간다.
이 알고리즘이 이 문제의 핵심 of 핵심이다!!!
- char 형 숫자를 int 형으로 바꾸는 방법은, ' 0 ' 을 빼면 된다. ( 예: ' 5 ' - ' 0 ' = 5 )