Algorithm/Java

프로그래머스 - 문자열을 정수로 바꾸기 java

고고마코드 2022. 1. 4. 00:06
반응형
12925번 문제

코딩테스트 연습 - 문자열을 정수로 바꾸기 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 문자열을 정수로 바꾸기

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니

programmers.co.kr

 


풀이
  • 생각

핵심은 맨앞의 문자는 '+', '-' 부호가 올 수 있다는 것

부호를 먼저 판별하고 남은 문자를 수로 변환하면 되겠다.

 

  • 1번 풀이
public int solution(String s) {
	char first = s.charAt(0);
	
	boolean minus = (first == '-') ? true : false;
	char[] chAry = s.toCharArray();
	int val = 0, len = chAry.length;
	int i = (first == '-' || first == '+') ? 1 : 0;
	
	while(i < len) {
		val = (chAry[i++] - 48) + (val * 10);
	}
	
	return minus ? -val : val;
}

 

 

부호를 먼저 판별하고 부호를 제외한 남은 문자에 대하여 반복 수행

- 이 문제의 샘플 데이터는 '+' 부호가 나올 수도 있고 안 나올 수도 있다. 그러므로 두 가지 경우의 수 모두 생각해야 한다. 음수는 사전에 확인해야 하므로 첫 문자가 '-' 인지 확인하여 기억해둔다.

문자를 숫자로 바꾸기

- '0' = 48 이므로 '0' 을 숫자 0으로 변환하기 위해서는 '0' - 48 = 0

ex) '1' - 48 = 49 - 48 = 1

자릿수 정하기

수가 늘어남에 따라 자릿수를 하나씩 증가시킨다.

ex) 1542

val chAry[i] - 48 val * 10
0 1 0 1
1 5 10 15
15 4 150 154
154 2 1540 1542

 

  • 2번 풀이
public int solution(String s) {
	return Integer.parseInt(s);
}

Integer.parseInt(String s)

- 문자열 s를 10진수 정수로 반환한다.

- 메소드 내부는 예외처리를 제외하면 1번 풀이와 비슷하다.

 

반응형