2019년 1월 13일 일요일

#6 알고리즘 연습- 문자열을 정수로 바꾸기 /JAVA


문자열을 정수로 바꾸기


문제 설명
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한 조건
  • s의 길이는 1 이상 5이하입니다.
  • s의 맨앞에는 부호(+, -)가 올 수 있습니다.
  • s는 부호와 숫자로만 이루어져있습니다.
  • s는 0으로 시작하지 않습니다.
입출력 예
예를들어 str이 1234이면 1234를 반환하고, -1234이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.




문제풀이 IDEA

문자열을 정수로 바꾸는 방법은 parseInt를 이용하면 손쉽게 바꿀수 있다

하지만 이러한 method를 사용하지 않고 바꾸는 방법이라 한다면
ascii code를 가져와서 연산한 값을 int로 쓰고 출력을 해준다면 되지 않을까?

➡️ 이 부분은 PYTHON코드로 구현해 보았습니다.




프로그래머스의 -님 풀이 ⭐

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 문제가 개편 되었습니다. 이로 인해 함수 구성이 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
public class StrToInt {
    public int getStrToInt(String str) {
            boolean Sign = true;                        //Sign은 들어온 str를 판별해 내보낼 부호를 체크해주기 위한 boolean
            int result = 0;

      for (int i = 0; i < str.length(); i++) {          str의 길이만큼 반복하여
                char ch = str.charAt(i);                str의 글자 하나하나를 char로 저장
                if (ch == '-')                          그리고 만약 char중에 -가 있으면 Sign값을 false로 해서 나중에 -출력되게함
                    Sign = false;
                else if(ch !='+')
                    result = result * 10 + (ch - '0');  그리고 남은 char들을 비교해서 부호를 나타내는 부분이 아닐때 
            }                                           '5' - '0' 을 해주게 되면 int값 5가 나오게 되고
                                                        앞에 result * 10부분은 char의 index가 하나씩 증가할때마다 자릿수를 올려줘야하므로
            return Sign?1:-1 * result;                  그리고 Sign의 부호에 따라 false일때 -1*result를 해서 출력
    }
    //아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void main(String args[]) {
        StrToInt strToInt = new StrToInt();
        System.out.println(strToInt.getStrToInt("-1234"));
    }
}




눈여겨 보아야 할 개념

JAVA의 parseInt를 이런식으로 구현할수 있다는 것을 보고 논리적 사고를 배양하도록 하자

그리고 char '7' - char '0'을 하게 되면 7이라는 int값이 나온다는 것도 유념해보자.



출처 : 프로그래머스(https://programmers.co.kr)

댓글 없음:

댓글 쓰기

가장 많이 본 글