0 떼기

nacSeo (낙서)·2024년 3월 8일
0

프로그래머스

목록 보기
118/169

문제 설명

정수로 이루어진 문자열 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);
    }
}

느낀 점

좀 더 문제를 잘 이해했다면 더 쉽게 풀 수도 있었을 것 같다. 특히 다른 사람 코드의 정수형 변환 방법은 생각치도 못한 한 줄로도 해결할 수 있는 방법!! 근본적으로 문제를 이해해보도록 하자

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글