반응형

 


단순한 문제로
String 문자열을 Integer 형태로 바꾸는 문제이다.

 

String 문자열을 Integer 형태로 바꾸는 방법은 2가지이다.

Integer.parseInt();

Integer.valueof();

 

하지만 이 둘은 문자열을 정수로 변환해주는 메소드지만 차이점이 있다.

 

  1. 리턴타입
  2. 동작방식

 

1. 리턴 타입

  • Integer.parseInt(String s); -> int 반환
  • Integer.valueOf(String s); -> Integer 객체 반환

2. 동작 방식

  • Integer.parseInt(String s); -> 문자열 파싱 후 int로 변환
  • Integer.valueOf(String s); -> int값으로 반환 후에 Integer 객체로 반환

 

그러면 반환 타입이 valueOf는 Integer 형태인 객체를 반환하니까 안되지 않을까?

라는 궁금증을 가지고 valueOf도 넣어서 해봤지만 잘 되었다.

 

그 이유를 알아보니까

 

valueOf는 객체를 반환하지만 자바 내부에서 '언박싱' 이라는 기능을 사용해 int형으로 반환한다는 것이었다!

하지만 코딩테스트에서 중요한 부분은 시간복잡도와 코드의 성능이 굉장히 중요한 부분을 차지한다.

 

valueOf와 parseInt의 시간 복잡도는 모두 O(n)으로 같지만 valueOf는 중간에 언박싱 하는 상황때문에 코드 성능이 그렇게 좋진 않다.

 


 

결론은 valueOf()와 parseInt() 모두 사용해도 괜찮지만 코드 성능을 우선적으로 생각하면

parseInt()를 사용하는 것이 좋다.

 

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

 

반응형

+ Recent posts