문자열을 정수로 바꾸기

1 minute read

Programmers.co.kr 코딩테스트 연습

Level 1 - 사용언어 Java - 문자열을 정수로 바꾸기

strToInt1

나의 답안

class Solution {
    public int solution(String s) {
        int answer = 0;
        boolean negative = false;
        boolean skipFirstChar = false;
        char firstChar = s.charAt(0);

        if (firstChar == '-') {
            negative = true;
            skipFirstChar = true;
        } else if (firstChar == '+') {
            skipFirstChar = true;
        }

        if (skipFirstChar) {
            for (int i = 1; i < s.length(); i++) {
                answer = (answer * 10) + (int)(s.charAt(i) - 48);
            }
        } else {
            for (int i = 0; i < s.length(); i++) {
                answer = (answer * 10) + (int)(s.charAt(i) - 48);
            }
        }
        
        answer = negative? -answer : answer;

        return answer;
    }
}

피드백을 받아서 진화한 나의 답안

class Solution {
   public int solution(String s) {
      int answer = 0;
      char firstChar = s.charAt(0);
      String number = Character.isDigit(firstChar) ? s : s.substring(1);

      for (int i = 0; i < number.length(); i++) {
         answer = (answer * 10) + (int) (number.charAt(i) - 48);
      }

      return answer = (firstChar == '-') ? -answer : answer;
   }
}

잘 정리된 다른 사람의 답안..

public class StrToInt {
    public int getStrToInt(String str) {
            boolean Sign = true;
            int result = 0;

      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?1:-1 * result;
    }

이건 반칙!!

class Solution {
  public int solution(String s) {
      int answer = 0;
      answer = Integer.parseInt(s);
      return answer;
  }
}