오늘의 문제는
이진 변환 반복하기였습니닷
사실 이 문제는 여러 번 들낙해도 풀지 못하고 나갔었는데 어제 친구가 풀었다길래 저도 용기를 내서 풀었고, 내가 저번에 풀어둔 코드에 while 문 추가해서 성공했습니다!
function solution(s) {
var answer = [];
var cnt = s.split('0').length - 1;
var whicnt = 0;
while(s.length > 1) {
s = s.replace(/0/g,'');
s = Number(s.length).toString(2);
cnt += s.split('0').length - 1;
whicnt++;
}
answer.push(whicnt);
answer.push(cnt)
return answer;
}
우선 cnt 에서 처음에 0의 개수를 구해주고, 만약 s.length 가 1이 되면 바로 끝내야 해서 저런 조건식을 넣어 줬어요
그리구, 정규식을 이용해서 0을 전부 제거해 줬습니다.
0이 제거된 s 문자열을 메서드를 통해서 이진 문자열 숫자로 바꿔 주었고 0의 개수를 또 더해 주었습니다.
왜냐하면 answer 에 최종적으로 들어가야 하는 값은 while 문이 총 몇 번 돌았는지, 0이 몇 개가 제거 되었는지이기 때문에 마지막에는 push 를 해 줬습니다!
오늘 코테도 완성 ㅎㅎ 부히힛
'레쭈고 코테' 카테고리의 다른 글
코딩 테스트 - 61 (0) | 2025.02.11 |
---|---|
코딩 테스트 - 59 (0) | 2025.01.22 |
코딩 테스트 - 57 (0) | 2025.01.12 |
코딩 테스트 - 56 (1) | 2025.01.08 |
코딩 테스트 - 55 (0) | 2025.01.07 |