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

김영민·2022년 1월 27일
0

문제📃

1. 문제 설명

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

2. 제한 조건

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

3. 입출력 예

예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.


풀이

나의 정답👨‍💻

public class StringToInt {	

    // 문자열 s를 매개변수로 받고, 정수를 리턴값으로 돌려주는 메소드 생성
    public int solution1(String s) {
    
        // 문자열을 정수로 바꿔주는 함수를 이용하여 해결
        int answer = Integer.parseInt(s);        
        return answer;
    }

심화 정답🏆

    public int solution2(String s) {
    
        // true로 초기화된 불린형 Sign과 정수 result를 선언
        boolean Sign = true;
        int result = 0;
        
        // 문자열 s의 길이만큼 반복문을 돌림
        for (int i = 0; i < s.length(); i++) {
        
            // 문자형 ch에 문자열 s의 i번째 글자를 대입
            char ch = s.charAt(i);
            
            // 문자형 ch에 '-'가 대입된다면
            if (ch == '-')
            	//불린형 Sign에 false를 선언
            	Sign = false;
                
            // 문자형 ch에 '+'가 대입되지 않는다면, 즉, 숫자가 대입된다면
            else if(ch !='+')
            
            	// 문자형 변수는 문자형끼리 사칙연산이 가능함
            	// 단, 문자형에 적혀있는 문자의 값으로 계산되늰 것이 아니라,
                // 각 문자에 부여된 유니코드 값으로 계산이 됨
            	// ex) char a = 'A'  <- 유니코드 값 : 65 
            	//     char b = 'B'  <- 유니코드 값 : 66
            	//     a + b = 131,  a - b = -1,
                //     a * b = 4,290,  a / b = 0 (소수점 이하 생략)                

            	// 문자형ch에 대입된 숫자에 '0'을 뺸 후, 
                // 정수 result에 10을 곱해 10의 자리씩 늘려줌
            	// 문자형 '0'의 유니코드 값은 48이지만 숫자가 하나씩 커질 때마다 
                // 유니코드 값도 하나씩 커지기 때문에 문자형끼리 뺄샘을 해도
                // 화면에 표시되는 숫자를 계산했을 떄와 같은 값이 도출됨 
            	result = (ch - '0') + result * 10;
        }
        
        // Sign이 True라면(즉, 양수라면), result값을 양수로 유지하고,
        // Sign이 False라면(즉, 음수라면), result값에 -1을 곱해 음수로 만듦
        return Sign ? 1 * result : -1 * result;
    }

테스트용 코드🎯

    public static void main (String[] args) {
        StringToInt stringtoint = new StringToInt();
  			  			  			
        System.out.println(stringtoint.solution1("1234")); // 1234 출력
        System.out.println(stringtoint.solution1("-1234")); // -1234 출력
  			
        System.out.println(stringtoint.solution2("1234")); // 1234 출력
        System.out.println(stringtoint.solution2("-1234")); // -1234 출력
    }
}
profile
Macro Developer

0개의 댓글