[프로그래머스] 문자열을 정수로 바꾸기
문자열의 길이는(s는) 1~5이고, s 맨 앞에는 부호(+,-)
가 올 수 있다고 한다.
부호에 따른 처리가 필요한 것인지 궁금했지만 일단 매개변수로 받은 문자열 s를 정수로 casting 해보았다.
1 | import java.util.*; |
우선 이렇게 코딩 후 실행하니 테스트케이스를 전부 통과했고, 놀랍게도 제출하니 정답으로 통과했다.
하지만 남들이 푼 코드를 보니 API에 의존한 내가 너무 부끄럽게 느껴질 정도였다.
남들이 푼 코드 중 하나를 가져와서 atoi에 대해 다시 한번 익혀보도록 하자.
1 | public class Solution { |
매개변수 문자열 str을 toCharArray
로 문자로 char 변수에 받은 후 - 부호가 존재하면 plus 상태를 false라고 해주고 만약 +부호 일때는 if문을 벗어난다.
문자 중 부호가 없으면 else 문으로 진입하게 되는데, 여기서부터가 atoi의 핵심이다.
1 | for (char ch : str.toCharArray()) { |
String 객체에 담긴 문자열이 int 형 변수에 Integer로 Casting 되는 과정이다.
1 | //ex) String = 12 |
초반에 result에 10을 곱해주는 이유는 Decimal 데이터를 얻어야 하기에 그렇다.
또한 아스키코드 상에서 48은 문자열 0이므로 문자열 1(49)에서 문자열 0(48)을 빼주면
정수 1이 출력될 수 있다. 마지막으로 plus 상태가 true이면 바로 value 출력, false면 value에 -1을 곱한 후 리턴해주면 된다.
[프로그래머스] 문자열을 정수로 바꾸기