문자열을 정수로 변환하기

나의 기록·2026년 5월 26일

코딩테스트

목록 보기
2/35

코딩테스트 .. 공부 잘안하니까 다 까먹었다.. 다시 처음부터 해야할듯

문제 설명

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

제한 조건

s의 길이는 1 이상 5이하입니다.
s의 맨앞에는 부호(+, -)가 올 수 있습니다.
s는 부호와 숫자로만 이루어져있습니다.
s는 "0"으로 시작하지 않습니다.
입출력 예
예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.

이 문제는 사실 되게 간단한 문제라 코딩테스트 문제라고 하기 어렵다.

간단하게 푼다면 이렇게 풀면 끝남

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

근데 다른 사람들이 푼거 보니까, 내장함수를 안쓰고 풀려고 했던 사람들이 많아서 그방식이 좋을것 같아 나도 쉬운 문제면 다른 방식을 좀 써서 풀어보려고 한다.

여기서 문제를 풀기 위해서는 아스키 코드를 알면 좀 편하게 풀 수 있다. - > 아스키코드 핵심 패턴

처음에 아스키코드가 필요한 이유는 문자열을 숫자로 변경하기 위해서다. 아스키 코드는 문자열을 숫자로 계산하기 위한 방법임
0=48, 1=49 만약 '1' - '0' = 49 - 48 =1 이렇게 숫자 계산이 가능하다.

위 문제에서 주어지는 문자열은 부호와 숫자로만 이루어져 있으며
길이는 1이상 5이하 최대 length는 5라는 소리

+1234, -1234, 1234 이런식으로 숫자가 들어올 수 있다는뜻
문제를 풀어보쟈.

 public int solution(String s) {
        int answer = 0;
        
        // 음수인지 아닌지 구분하기 위한 구분자
        boolean negative = false;
        
        // 문자열 s를 받았을때 부호가 포함되어있는지 체크한다.
        // 부호가 있으면 구분자값으로 음수인지 양수인지 기억하고 부호를 제거한다.
        if(s.contains("-")){
            s=s.replace("-","");
            negative=true;
        }else{
            s=s.replace("+","");
        }
        
        //문자열의 길이 만큼 계산하기
        for(int i=0; i<s.length(); i++){
        // chatAt(i)로 해당 인덱스의 문자열을 char로 
        // 가져오고, char끼리 연산을 하면 자동으로 아스키 코드로 계산한다.                         
            answer = answer * 10 + (s.charAt(i)-'0');
            
        }
   		// 그리고 만약 부호가 음수였다면 -1를 곱해준다.     
        if(negative){
            answer*=-1;
        }

        return answer;
    }

profile
뭐든 남겨본다

0개의 댓글