코딩테스트/코딩테스트
[프로그래머스-3, level 1 JAVA] 문자열을 정수로 바꾸기
90만식
2021. 1. 17. 11:41
728x90
레벨 : 1, 사용언어 : JAVA
1. 문제설명
- 문제설명
- 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
- 제한조건
- s의 길이는 1 이상 5이하입니다.
- s의 맨앞에는 부호(+, -)가 올 수 있습니다.
- s는 부호와 숫자로만 이루어져있습니다.
- s는 0으로 시작하지 않습니다.
- 입출력 예
- 예를들어 str이 1234이면 1234를 반환하고, -1234이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
2.나의 풀이
문자열을 정수로 바꾸는 문제 이다.
s의 맨앞에는 부호(+,-)가 올 수도 있고 없을 수도 있다.
함수 Integer.parsetInt를 쓰면 간단하게 해결할 수 있는 문제였지만, parseInt를 직접 구현해 보고 싶었다.
public static int solution(String s) {
boolean negativeNumFlag = false; // 음수,양수 판단
int sum = 0;
for(int i=0; i<s.length(); i++) {
if(s.charAt(i) == '+') {
negativeNumFlag = false;
}else if( s.charAt(i) == '-') {
negativeNumFlag = true;
}else {
sum = sum* 10 + (s.charAt(i)-'0'); // 아스키코드상 '0'을 빼게되면 숫자로 변환
}
}
return negativeNumFlag == true ? sum : sum*-1;
}
만약 입력 -5323가 들어온다고 하면
SUM | i | s.charAt(i) | sum * 10 + (s.charAt(i)-'10') | negativeNumFlag |
0 | 0 | - | false | |
0 | 1 | 5 | 0 * 10 + 5 = 5 | false |
5 | 2 | 3 | 5*10 + 3 = 53 | false |
53 | 3 | 2 | 53*10 + 2 = 532 | false |
532 | 4 | 3 | 532*10 + 3 = 5323 | flase |
3. 다른사람의 풀이
public class StrToInt {
public int getStrToInt(String str) {
return Integer.parseInt(str);
}
//아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String args[]) {
StrToInt strToInt = new StrToInt();
System.out.println(strToInt.getStrToInt("-1234"));
}
}
간단하게 Integer.parsetInt로 변경 할 수 있다. 실제로는 위처럼 직접 구현하지 않고 구현되어 있는 함수를 사용한다.
728x90