더북(TheBook)

첫 번째 방법부터 알아볼까요? 문제를 해결할 때는 천천히 생각해보는 것이 중요합니다. 이 문제는 String형으로 들어온 값을 int로 바꿔서 결괏값을 리턴하는 문제입니다. 따라서 결괏값을 담을 변수가 필요합니다. 결괏값은 int형이어야 하므로 result라는 변수를 int형으로 선언했습니다.

 

이 문제는 첫 번째 문자가 부호(+, -)를 가진 경우와 아닌 경우로 나뉘므로 결괏값을 리턴할 때 부호값을 정확히 해줘야 합니다. 그래서 부호를 나타낼 변수가 필요합니다. 음수인 경우에는 결괏값에 -1을 곱하고, 양수인 경우에는 +1을 곱하면 되겠죠? 그 값을 기억할 변수 sign을 선언합니다. 다음으로 문자열로 들어온 값을 정수로 바꿔줍니다. -1234, +1234, 1234 이런 경우 값들을 가져올 텐데, 첫 번째 문자가 부호 비트일 경우에는 숫자로 바꿀 필요가 없겠죠? 이 문제는 어떻게 해결할 수 있을까요? index라는 변수를 하나 선언하고, 부호가 있는 경우에 해당하는 1값으로 초기화해줍니다. 그러면 나중에 문자를 숫자로 바꿀 반복문을 수행할 때 부호를 가진 값은 index1로, 부호가 없는 값은 index0으로 시작해서 문제를 해결합니다.

 

본격적으로 해야 할 일은 첫 번째 비트가 부호인지 아닌지 어떤 부호인지에 따라서 sign 값을 할당하는 일입니다. if 문에서 그 일을 하면 되겠죠? 첫 번째 문자를 얻어내는 메서드는 charAt(0)을 이용하면 됩니다. 이 첫 번째 문자가 ‘-’이면 sign-1로, ‘+’라면 sign1로 값을 sign 값을 바꿔주고, 첫 번째 문자가 ‘-’도 ‘+’도 아니라면 부호 없이 값이 들어온 경우이므로 이때는 index 값을 0으로 할당해줍니다. 이렇게 해주면 String 값을 int 값으로 바꿀 때 부호가 있는 값은 두 번째 문자부터 바꿔주고, 부호가 없는 값은 첫 번째 문자부터 바꿔줄 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.