문제 설명
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한사항
- s의 길이는 1 이상 5이하입니다.
- s의 맨앞에는 부호(+, -)가 올 수 있습니다.
- s는 부호와 숫자로만 이루어져있습니다.
- s는 "0"으로 시작하지 않습니다.
입출력 예 설명
예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
⭕ 풀이
class Solution {
public int solution(String str) {
char[] chArr = str.toCharArray();
boolean minusFlag = false;
int result = 0;
for(int i=0;i<chArr.length;i++) {
if(chArr[i]=='-') {
minusFlag = true;
}else if(chArr[i]!='+') { // - 도 + 도 아닌 즉 숫자라면
result = (result * 10) + chArr[i]-'0';
}
}
return minusFlag==true?result*-1:result;
}
}
✅ 흐름
1. 맨앞부호가 음수인지 양수인지를 판별하기위한 변수 minusFlag 를 만들어둔다
2. 입력받은 문자열을 char배열로 만들고 '-' 가 있다면 minusFlag를 true로 초기화한다
3. 반복하며 조건을 else if(chArr[i] != '+' 로 설정해 - 도 아니며 + 도 아닌경우를 판별한다
4. 기존 result에 10을곱해 1의자리를 비워두고 chArr[i] 문자에서 -'0'을 빼 1의자리에 더하는 작업을 반복한다.
5. minusFlag가 true였다면 즉, 음수라는 소리이므로 result에 -1을 곱해 음수로 만들어준다.
처음에는 Integer.parseInt 사용하면 되는거아닌가 하고 생각해 return Integer.parseInt(str); 로 풀었다가
다른분들의 풀이를 보니 코드가 길고 Integer.parseInt를 분해해둔 느낌으로 풀어야하는 것 같아서 나도 다시 풀어보았다.
-출처
https://school.programmers.co.kr/learn/courses/30/lessons/12925
'Algorithm > Programmers(Java)' 카테고리의 다른 글
[프로그래머스/Lv.1] 가장 가까운 같은 글자 (0) | 2022.12.08 |
---|---|
[프로그래머스/Lv.1] x만큼 간격이 있는 n개의 숫자 (0) | 2022.12.08 |
[프로그래머스/Lv.1] 문자열 내 p와 y의 개수 (1) | 2022.12.08 |
[프로그래머스/Lv.1] 정수 제곱근 판별 (0) | 2022.12.07 |
[프로그래머스/Lv.1] 자연수 뒤집어 배열로 만들기 (0) | 2022.12.07 |