코딩 테스트

[프로그래머스] (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 )