김_수댕 2024. 4. 8. 10:28
반응형

4월 5일에 풀었는데 티스토리 오류로 오늘 올렸다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/181847s

✅ 문제

정수로 이루어진 문자열 n_str이 주어질 때, n_str의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return하도록 solution 함수를 완성해주세요.

제한 사항

  • 2 ≤ n_str ≤ 10
  • n_str이 "0"으로만 이루어진 경우는 없습니다.

입출력 예

n_str  result
"0010" "10"
"854020" "854020"

🔎 풀이 방법

문자열을 배열로 만들어 인덱스 0 부터 0인지 아닌지 검사한다.

0이 아닌 수를 만난 경우, 해당 수의 인덱스를 flag에 담아서 answer 배열에 해당 인덱스의 값부터 push 해준다.

split()안에 어떻게 구분할 지 명시하지 않아서 [ ‘0010’ ] 이런 식으로 나눠져서 테스트 케이스에서 틀리게 나왔다. 내가 원한 결과는 [’0’, ‘0’, ‘1’, ‘0’]이어서 split(’’)으로 구분자를 적어주니 해결되었다.

String.prototype.split() - JavaScript | MDN

 

String.prototype.split() - JavaScript | MDN

split() 메서드는 String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눕니다.

developer.mozilla.org

💻 코드

function solution(n_str) {
    let newArr = n_str.split('');
    let answer = [];
    let flag = 0;
    for(let i = 0; i < n_str.length; i++) {
        if(Number(newArr[i]) !== 0) {
            flag = i;
            break;
        }
    }
    for(let j = flag; j < n_str.length; j++) {
        answer.push(newArr[j]);
    }
    return answer.join('');
}

👀 추가 공부

number로 바꾸면 0이 아닌 숫자의 앞에 0이 붙은 경우, 0이 아닌 숫자부터 숫자로 세기 때문에 숫자 앞의 0을 없앨 수 있다.

const solution = (str) => String(Number(str))
반응형