문제 설명
정수로 이루어진 문자열 n_str이 주어질 때, n_str의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
2 ≤ n_str ≤ 10 n_str이 "0"으로만 이루어진 경우는 없습니다.
나의 코드
class Solution {
public String solution(String n_str) {
int count = 0;
for(int i=0; i<n_str.length(); i++) {
if(n_str.charAt(0)=='0') {
while(n_str.charAt(i)!='0') {
count++;
}
}
}
String answer = n_str.substring(count);
return answer;
}
}
실행 시간이 10.0초를 초과하여 실행이 중단되었습니다. 실행 시간이 더 짧은 다른 방법을 찾아보세요.
테스트 결과 (~˘▾˘)~
2개 중 1개 성공
n_str
문자열의 문자들을 돌면서 첫 번째 문자가 '0'
일 때, 0
이 안나올 때까지 돌면서 count
를 저장시켜 몇 번째 인덱스까지 0이 연속해서 나올지 기록하고, 마지막에 substring()
을 사용하여 그만큼을 빼준 후 구해보려고 했다. 결과는 시간 초과... while
루프 내에서 count
가 업데이트되지 않아 무한루프가 발생하는 것 같다.
class Solution {
public String solution(String n_str) {
int count = 0;
while(count < n_str.length() && n_str.charAt(count)=='0') {
count++;
}
return n_str.substring(count);
}
}
따로 반복문 없이도 count
값으로 해결할 수가 있었다.
다른 사람 코드
class Solution {
public String solution(String n_str) {
return ""+Integer.parseInt(n_str);
}
}
Integer.parseInt()
메소드를 활용하여 정수형으로 바꾸어준다면, 자연스레 앞에 0들이 사라진다..!!!
class Solution {
public String solution(String n_str) {
int idx = -1;
for (int i = 0;i < n_str.length();i++)
if (n_str.charAt(i) >= '1') {
idx = i;
break;
}
return n_str.substring(idx);
}
}
느낀 점
좀 더 문제를 잘 이해했다면 더 쉽게 풀 수도 있었을 것 같다. 특히 다른 사람 코드의 정수형 변환 방법은 생각치도 못한 한 줄로도 해결할 수 있는 방법!! 근본적으로 문제를 이해해보도록 하자