Algorithm/Programmers(Java)

[프로그래머스/Lv.1] 문자열을 정수로 바꾸기

비망노트 2022. 12. 8. 22:09
문제 설명

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.

 

제한사항
  • s의 길이는 1 이상 5이하입니다.
  • s의 맨앞에는 부호(+, -)가 올 수 있습니다.
  • s는 부호와 숫자로만 이루어져있습니다.
  • s는 "0"으로 시작하지 않습니다.

 

입출력 예 설명

예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.

 

 

⭕ 풀이

class Solution {
    public int solution(String str) {
        char[] chArr = str.toCharArray();
        boolean minusFlag = false;
        int result = 0;
        for(int i=0;i<chArr.length;i++) {
            if(chArr[i]=='-') {
                minusFlag = true;
            }else if(chArr[i]!='+') { // - 도 + 도 아닌 즉 숫자라면
                result = (result * 10) + chArr[i]-'0';
            }
        }
        return minusFlag==true?result*-1:result;
    }
}

 

✅ 흐름

 

1. 맨앞부호가 음수인지 양수인지를 판별하기위한 변수 minusFlag 를 만들어둔다

2. 입력받은 문자열을 char배열로 만들고 '-' 가 있다면 minusFlag를 true로 초기화한다

3. 반복하며 조건을 else if(chArr[i] != '+' 로 설정해 - 도 아니며 + 도 아닌경우를 판별한다

4. 기존 result에 10을곱해 1의자리를 비워두고 chArr[i] 문자에서 -'0'을 빼 1의자리에 더하는 작업을 반복한다.

5. minusFlag가 true였다면 즉, 음수라는 소리이므로 result에 -1을 곱해 음수로 만들어준다.

 

 

처음에는 Integer.parseInt 사용하면 되는거아닌가 하고 생각해 return Integer.parseInt(str); 로 풀었다가

다른분들의 풀이를 보니 코드가 길고 Integer.parseInt를 분해해둔 느낌으로 풀어야하는 것 같아서 나도 다시 풀어보았다.

 

 

 

 

-출처

https://school.programmers.co.kr/learn/courses/30/lessons/12925