개발관련/코딩테스트

[프로그래머스-3, level 1 JAVA] 문자열을 정수로 바꾸기

90만식 2021. 1. 17. 11:41
레벨 : 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로 변경 할 수 있다. 실제로는 위처럼 직접 구현하지 않고 구현되어 있는 함수를 사용한다.