프로그래밍/알고리즘 문제풀이
codewar: Convert a String to Number!
noveljava
2019. 7. 2. 12:00
문제
- https://www.codewars.com/kata/544675c6f971f7399a000e79
Codewars: Train your coding skills
Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.
www.codewars.com
문제풀이
- String으로 들어온 문자열을 Int형 변수로 변경하는 문제입니다.
- Java에서 지원하는 Integer.parseInt( string형변수 ) 를 통해서 가능합니다.
public class StringToNumber {
public static int stringToNumber(String str) {
//TODO: Convert str into a number
return Integer.parseInt(str);
}
}
- 함수를 쓰지 않고, 직접 구현을 해보기로 생각하고 다음과 같이 구현을 하였습니다.
- 입력받은 문자열을 char array로 변환을 하여, 한글자씩 체크를 합니다.
- 첫 문자가 '-' 라면, 음수라는 의미이므로 차후 값을 위하여 prefix 로 음수라는 정보를 입력받아둡니다.
- 문자가 0~9 사이라면, ascii 코드값을 이용하여 숫자의 값을 구합니다. ( '0' 은 Ascii 코드값 48 을 의미합니다. )
- 그리고, 결과에 값을 더해주게 되는데 한번 수행할때마다 자릿수가 변경이 되므로 *10 을 통해서, 현재 가져온 값을 1의 자리값으로 고정시켜줍니다.
- 모든 계산이 끝난 후, 이전에 구해두었던 prefix를 이용하여 '양수/음수' 의 값을 제대로 설정해줍니다.
String tmp = "-1231241231";
int resultValue = 0;
int prefix = 1;
for(char c : tmp.toCharArray()) {
if('-' == c) {
prefix = -1;
} else if( '0' <= c && c <= '9'){
int value = c - 48;
resultValue *= 10;
resultValue += value;
}
}
resultValue *= prefix;
System.out.println(resultValue);