알고리즘, 코딩테스트

[프로그래머스/ 코딩테스트 연습문제] 문자열을 정수로 바꾸기

jy3574 2024. 10. 30. 17:43

Q. 문자열을 정수로 바꾸기

A1.

class Solution {
    public int solution(String s) {
        int answer = 0;
//문자열을 정수형으로 변환하는 가장 쉬운 형변환은 valueOf나 parseInt를 쓰는것인데,
//valueOf를 사용하면 이런 방법으로 사용가능하다.
        answer = Integer.valueOf(s);
        return answer;
    }
}

이 방법을 사용하면 간단하긴 하지만 알고리즘 형식이 아닌 것 같아서 다시 생각해서 풀어봤다.

 

A2.

class Solution {
    public int solution(String s) {
        int answer = 0;
        int sign = 1; //부호를 1로 지정 = 양수로 설정
        int startText = 0; //시작 문자를 비교해서 부호를 찾아야하니까 시작문자 선언
        
//charAt은 String 문자열로 된 글자 중에서 한글자만 char타입으로 변환해주는 역할을 함
//if문으로 첫번째 글자가 '-'일 경우 음수로 설정하고, '+'일 경우 그대로 두는 조건을 사용
        if(s.charAt(0) == '-'){
            sign = -1;
            startText = 1; //부호가 젤 첫번째 글자고, 두번째 글자부터 숫자니까 이제 숫자를 비교하기 위해 startText를 1로 둠
        } else if(s.charAt(0) == '+'){
            startText = 1;
        }
        
//i를 startText부터 시작해서 s의 길이까지 하나씩 증가하면서 charAt을 이용해 숫자로 변환
        for(int i = startText; i<s.length(); i++){
//answer 값에 10을 곱해 자리수를 왼쪽으로 한칸씩 이동하면서, charAt을 이용해 문자열에서 i번째 문자를 가져옴
//가져온 후에 ASCII 코드에서 문자 0 의 값을 빼면 숫자로 변환됨
            answer = answer * 10 + (s.charAt(i) - '0');
        }
        return answer * sign; //최종적으로 answer에 부호를 곱해주면 끝
    }
}