문제

프로그래머스 문제링크
풀이 코드
class Solution
{
public int solution(String s)
{
boolean sign = true;
int answer = 0;
int i = 0;
char[] number = s.toCharArray();
while(i < number.length)
{
if(number[i] == '-' && sign == true)
sign = false;
else if(number[i] == '-' && sign == false)
sign = true;
else if (number[i] >= '0' && number[i] <= '9')
answer = answer * 10 + (number[i] - '0');
i++;
}
answer *= sign ? 1 : -1;
return answer;
}
}
리뷰
- 문자열을 정수로 변환하는 문제입니다.
- 정수 앞에는 부호가 들어올 수 있으며, 부호가 몇개 있는지에 대한 조건은 없었습니다.
2-1. 부호가 여러개일 수 있다는 가정하에 코드를 작성하였습니다.
- boolean sign을 통해 양수인지 음수인치 판별합니다.
3-1. toCharArray를 사용하여 부호와 숫자를 char형태로 변환시켜줍니다.
3-2. 부호를 확인하고 음수가 홀수개 일땐 false, 짝수개 일땐 true로 체크해둡니다.
3-3. char는 숫자 1개만을 담을 수 있기 때문에 int로 넘겨줄때에는 answer = answer * 10 + (number[i] - '0') 형태가 필요합니다.
- 최종적으로 판별된 부호를 삼항연산자를 통해 answer에 곱해주고 반환합니다.
부호가 1개 일때
class Solution
{
public int solution(String s)
{
return Integer.parseInt(s);
}
}