[JAVA] 문자열을 정수로 바꾸기

태히·2021년 1월 19일
0

코딩테스트 연습

목록 보기
3/9

문제설명

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

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

처음 떠오른 생각

  1. 먼저 문자열의 맨 앞이 부호이기 때문에 '+'인지 '-'인지 판별.
  2. 판별된 문자열의 부호를 떼주고 정수로 변환.( parseInt() )
  3. 음수로 판별될 경우 변환된 정수에 -1을 곱함.

풀이

class Solution {
    public int solution(String s){
        int answer = 0;
        char op = s.charAt(0);

        switch (op) {
            case '+':
                System.out.println("This is 양수");
                answer = op_delete(s);

                break;
            case '-':
                System.out.println("This is 음수");
                answer = op_delete(s)*-1;
                break;
            default:
                System.out.println("This is DEFAULT");
                answer = Integer.parseInt(s);
        }
        System.out.println(answer);
        return answer;
    }
    public int op_delete(String s){
        String tmp_arr="";
        for(int i=1; i<s.length(); i++){
            tmp_arr+=s.charAt(i);
        }
        return Integer.parseInt(tmp_arr);
    }
}
  • 처음 생각했던 풀이와 같이 부호를 판별하기 위해 문자열의 첫 번째 문자를 'op'라는 변수에 받아옵니다.
  • switch/case를 통해 부호인지 판별하고 부호가 있는 경우와 없는 경우를 나눴습니다.
  • op_delete라는 메소드를 만들었고 이는 부호가 있을경우 부호를 떼어준 후 정수로 변환해주고 반환해주는 메소드 입니다.

REVIEW...

통과는 했으나.....
parseInt()를 몰랐다... 부호까지 다 변환해주는지 몰랐다.....
이 처럼 복잡하게 하지 않고 그냥 parseInt()때려 박았어도 바로 풀 수 있는 문제였다.
이건 라이브러리를 쓴것도 아니고 안쓴것도 아니고.....
다른사람 풀이를 보니 저렇게 부호를 판별하고 parseInt()를 쓰지 않고 정수로 바꿔주는 식으로 풀은 사람도 있었다. 물론 그냥 parseInt()를 때려박은 사람도 있었다.
그래도 부호판별을 해야겠다는 생각을 한게....잘 한건지 뻘짓 한건지...

후기

사실 처음에 문제를 보자마자 "이거 그냥 부호 빼고 parseInt 쓰면 될꺼같은데?"라고 생각했다. 전에도 말했지만 라이브러리를 빼놓고 진짜 삽질로 코딩을 해봐야 늘지 않겠나?

실력은 곧 삽질이다.

GITHUB 주소 : 문자열을 정수로 바꾸기_giturl

profile
하고싶은게 많은 개발자가 되고싶은

0개의 댓글