728x90
https://school.programmers.co.kr/learn/courses/30/lessons/70129
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
본 포스팅에서 다루는 문제는 위 프로그래머스 링크를 통하여 문제 확인 및 풀이가 가능합니다!
1. 문제 풀이
이 문제에서는 '문제에서 정의한 이진 변환'이 무엇이고 이를 구현하기 위하여 어떤 메서드들이 필요한 지를 아는 것이 중요한 문제입니다. 본 문제에서의 문자열 x에 대한 이진 변환은 아래와 같이 정의합니다.
- x의 모든 0을 제거
- x의 길이를 c라고 할때, c를 이진법으로 표현한 문자열로 변환
즉, x가 "0111010"이라면 1번 과정에서 "1111"로 바뀌고 2번 과정에서 4를 이진법으로 나타낸 "100"으로 변환됩니다("0111010" -> "1111" -> "100").
이 이진 변환은 "1"이 될때까지 반복하며, 반환값으로는 이진 변환의 횟수, 변환 과정에서 제거된 0의 개수를 담은 배열입니다.
2. 정답 코드
function solution(s) {
var answer = [0, 0];
let oldLen, newLen;
while (s !== "1") {
oldLen = s.length;
s = s.replaceAll('0', '');
newLen = s.length;
s = (s.length).toString(2);
answer[0]++;
answer[1] += oldLen - newLen;
}
return answer;
}
저의 경우에는 모든 0을 제거하기 위하여 replaceAll을 사용하였고 이진수 표현으로 문자열을 변화시키기 위하여 toString(2)를 사용하였습니다.
제거한 0의 개수는 (초기 s의 길이 - 0을 제거한 뒤 s의 길이)와 같은 것을 이용하여 위와 같이 코드를 작성하였습니다.
728x90
'알고리즘' 카테고리의 다른 글
[알고리즘] 코딩테스트 연습(코딩테스트 입문) - [JavaScript] 개미 군단 (2) | 2024.06.05 |
---|---|
[알고리즘] 코딩테스트 연습(월간 코드 챌린지 시즌 1) - [JavaScript] 두 개 뽑아서 더하기 (0) | 2024.05.30 |
[알고리즘] 코딩테스트 연습 - [JavaScript] 최솟값 만들기 (0) | 2024.04.04 |
[알고리즘] 코딩테스트 연습 - [JavaScript] 달리기 경주 (0) | 2024.03.25 |
[알고리즘] 2018 KAKAO BLIND RECRUITMENT - [JavaScript] [1차] 비밀지도 (0) | 2024.03.21 |