문제
문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
class Solution {
public int solution(String s) {
int answer = 0;
return answer;
}
}
제한사항
s의 길이는 1 이상 5이하입니다.
s의 맨앞에는 부호(+, -)가 올 수 있습니다.
s는 부호와 숫자로만 이루어져있습니다.
s는 "0"으로 시작하지 않습니다.
입출력 예
입출력 예 설명
예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
문제 풀이
분석
함수를 사용하기 위함이 아니라 알고리즘을 이해하기 위한 문제이므로 다시 고민
- 실무에서 문자열을 int로 변경하는 경우 Integer.parseInt(s); 사용
+,- 부호와 숫자로 이루어져있음
- 아무것도 없는 경우 그냥 숫자만, - 부호인 경우 -를 붙여서 반환해야함. +가 붙는 경우도 고려해야함
문자열을 문자로 변환한 후 숫자로 변환하는 과정
- '0'의 ASCII 값은 48을 이용함
자릿수 하나씩 shift하는건 for문을 이용함
내 소스코드
class Solution {
public int solution(String s) {
return Integer.parseInt(s);
}
}
class Solution {
public int solution(String s) {
int result = 0;
boolean isNegative = false;
int startIndex = 0;
if (s.charAt(0) == '-') {
isNegative = true;
startIndex = 1;
} else if (s.charAt(0) == '+') {
startIndex = 1; // '+'가 있으면 숫자는 두 번째 문자부터 시작
}
for (int i = startIndex; i < s.length(); i++) {
int digit = s.charAt(i) - '0';
result = result * 10 + digit;
}
return isNegative ? result * -1 : result;
}
}
다른 예시 1
public class StrToInt {
public int getStrToInt(String str) {
boolean Sign = true;
int result = 0;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch == '-')
Sign = false;
else if(ch !='+')
result = result * 10 + (ch - '0');
}
return Sign?1:-1 * result;
}
//아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String args[]) {
StrToInt strToInt = new StrToInt();
System.out.println(strToInt.getStrToInt("-1234"));
}
}
추가로 고민 할 부분
다른 예시 1 : 아직 코딩 테스트 문제 의도를 정확하지 파악 못한 상태였다. 이 예시를 보고 깨달을 수 있었다.
Lv.1 / Java / 연습문제
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
'공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Lv. 1] 자릿수 더하기 - JAVA (0) | 2024.08.04 |
---|---|
[프로그래머스 Lv. 1] x만큼 간격이 있는 n개의 숫자 - JAVA (0) | 2024.08.03 |
[프로그래머스 Lv. 1] 약수의 합 - JAVA (0) | 2024.08.02 |
[프로그래머스 Lv. 1] 문자열 내 p와 y의 개수 - JAVA (0) | 2024.07.31 |
[프로그래머스 Lv. 1] 나머지가 1이 되는 수 찾기 - JAVA (0) | 2024.07.30 |