처리조건
더보기
https://programmers.co.kr/learn/courses/30/lessons/70129?language=javascript
풀이
처음 조건은 현재 s에 0이 있는지 확인 후 있다면 0을 모두 제거하고 제거한 0만큼 카운터를 쌓아준다. 그리고 남은 1들의 길이를 잰 다음 해당 길이를 다시 2진수로 바꾸면 1과0로 조합된 이진수형태가 될 것이다. 다시 여기서 처음 조건문부터 반복해주어야하며 길이가 1이 될 때 반복을 종료하면 된다.
우선 01110을 입력값 기준으로 생각해보자. 들어온 값에 0이 포함됐으므로 0을 제거해주어야한다. 제거한 0의 카운터를 +2해준다. 111만 남게 되고 111의 길이인 3을 이진형태로 바꾸면 11이 된다. 11은 0이 포함되어 있지 않다. 바로 길이인 2를 이진형태로 바꾸면 10이 된다. 0이 포함되어 있다 0을 한개 제거하며 0의 카운터에 +1를 해준다. 1이 되므로 종료되게 되며 총3회차에 0의 카운터는 3이된다. [3,3]을 리턴한다.
단순 조건문에 맞게 처리하면 되는 문제로 난이도2 치고는 굉장히 쉽다.
function solution(s) {
let zeroCount = 0;
let convertCount = 1;
let arrString = s.split("");
while (arrString.length > 1) {
if (arrString.includes("0")) {
arrString = arrString.filter((el) => {
if (el === "0") {
zeroCount++;
} else if (el === "1") return el;
});
} else {
arrString = arrString.length.toString(2).split("");
convertCount++;
}
}
return [convertCount, zeroCount];
}
'일반 학습 > 코딩 테스트' 카테고리의 다른 글
[프로그래머스] n^2 배열 자르기 (0) | 2022.04.30 |
---|---|
[프로그래머스] 점프와 순간 이동 (0) | 2022.04.29 |
[프로그래머스] 교점에 별 만들기 (0) | 2022.03.29 |
[프로그래머스] 구명보트 (0) | 2022.03.28 |
[프로그래머스] 영어 끝말잇기 (0) | 2022.03.28 |
댓글