2024-05-11 작성

알고리즘 문제 풀이 #4 문자열을 정수로 바꾸기

programers에서 문제 풀이한 내용입니다. 

문제 설명

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.

제한사항

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

입출력 결과

s answer
"1234" 1234
"-1234" -1234

문제 풀이 1

public static int convertStringToInteger_1(String s) {
    int result = 0;
    boolean isNegative = false;

    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);

        if (c == '-') {
            isNegative = true;
        } else if (c != '+') {
            result = result * 10 + (c - '0');
        }

    }
    return isNegative ? -result : result;
}

문제 풀이 개선

public static int convertStringToInteger_2(String s) {
    int result = 0;
    boolean isNegative = false;

    if (s.length() > 0) {
        char firstChar = s.charAt(0);
        if (firstChar == '-') {
            isNegative = true;
        }
    }

    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);

        if (c != '-' && c != '+') {
            result = result * 10 + (c - '0');
        }

    }
    return isNegative ? -result : result;
}

Integer 클래스의 valueof, parseint 같은 메서드를 활용하는 것도 좋지만, 알고리즘 문제를 풀이할 때에는 좀 더 원론적인 접근을 해보자.