프로그래머스 문제 정리
문제:
0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다.
x의 모든 0을 제거합니다.
x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다.
예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다.
0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요.
풀이:
function solution(s) {
let answer = [];
let checkTransformBinary = 0;
let checkZero = 0;
let checkString = s;
while(checkString !== "1"){
const deleteZero = checkString.replace(/0/g,"");
checkZero += checkString.length - deleteZero.length;
checkString = deleteZero.length.toString(2);
checkTransformBinary += 1;
}
answer.push(checkTransformBinary)
answer.push(checkZero)
return answer;
}
문제:
피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.
예를들어
F(2) = F(0) + F(1) = 0 + 1 = 1
F(3) = F(1) + F(2) = 1 + 1 = 2
F(4) = F(2) + F(3) = 1 + 2 = 3
F(5) = F(3) + F(4) = 2 + 3 = 5
와 같이 이어집니다.
2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요.
풀이:
function solution(n) {
let answer = 0;
const number = [0,1];
for(let i=2; i <= n; i++){
number.push((number[i-1] + number[i-2]) % 1234567);
}
answer = number[n];
return answer;
}
안녕하세요! 혹시 구글 이메일 확인해줄 수 잇으신가용?? 광고가 아니라 사이드 프로젝트 관해서 연락드린게 있어서요! 슬랙으로 연락을 드리고 싶은데 비활성화여서 이렇게 이메일이랑 블로그에 연락드려요 ㅠ