문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
s의 길이는 1 이상 5이하입니다.
s의 맨앞에는 부호(+, -)가 올 수 있습니다.
s는 부호와 숫자로만 이루어져있습니다.
s는 "0"으로 시작하지 않습니다.
예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
public class StringToInt {
// 문자열 s를 매개변수로 받고, 정수를 리턴값으로 돌려주는 메소드 생성
public int solution1(String s) {
// 문자열을 정수로 바꿔주는 함수를 이용하여 해결
int answer = Integer.parseInt(s);
return answer;
}
public int solution2(String s) {
// true로 초기화된 불린형 Sign과 정수 result를 선언
boolean Sign = true;
int result = 0;
// 문자열 s의 길이만큼 반복문을 돌림
for (int i = 0; i < s.length(); i++) {
// 문자형 ch에 문자열 s의 i번째 글자를 대입
char ch = s.charAt(i);
// 문자형 ch에 '-'가 대입된다면
if (ch == '-')
//불린형 Sign에 false를 선언
Sign = false;
// 문자형 ch에 '+'가 대입되지 않는다면, 즉, 숫자가 대입된다면
else if(ch !='+')
// 문자형 변수는 문자형끼리 사칙연산이 가능함
// 단, 문자형에 적혀있는 문자의 값으로 계산되늰 것이 아니라,
// 각 문자에 부여된 유니코드 값으로 계산이 됨
// ex) char a = 'A' <- 유니코드 값 : 65
// char b = 'B' <- 유니코드 값 : 66
// a + b = 131, a - b = -1,
// a * b = 4,290, a / b = 0 (소수점 이하 생략)
// 문자형ch에 대입된 숫자에 '0'을 뺸 후,
// 정수 result에 10을 곱해 10의 자리씩 늘려줌
// 문자형 '0'의 유니코드 값은 48이지만 숫자가 하나씩 커질 때마다
// 유니코드 값도 하나씩 커지기 때문에 문자형끼리 뺄샘을 해도
// 화면에 표시되는 숫자를 계산했을 떄와 같은 값이 도출됨
result = (ch - '0') + result * 10;
}
// Sign이 True라면(즉, 양수라면), result값을 양수로 유지하고,
// Sign이 False라면(즉, 음수라면), result값에 -1을 곱해 음수로 만듦
return Sign ? 1 * result : -1 * result;
}
public static void main (String[] args) {
StringToInt stringtoint = new StringToInt();
System.out.println(stringtoint.solution1("1234")); // 1234 출력
System.out.println(stringtoint.solution1("-1234")); // -1234 출력
System.out.println(stringtoint.solution2("1234")); // 1234 출력
System.out.println(stringtoint.solution2("-1234")); // -1234 출력
}
}