[알고리즘]프로그래머스 0단계 뽀개기(Day25)

HIHI JIN·2023년 4월 11일

알고리즘

목록 보기
28/29
post-thumbnail

Day 25

종이 자르기

머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다.
정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요.

//내 코드
function solution(M, N) {
    return M*N-1;
}
//입출력 예를 보고 규칙을 찾았는데 m*n-1을 하면 result값이 나왔다.

//내 코드(다른 풀이)
function solution(M, N) {
    return (M-1)+(N-1)*M;
}
//먼저 M이 1이 될때까지 잘라야 하므로 가로 자르는 횟수는 M-1
//N도 1이 될때까지 잘라야 하는데, M이 1일때는 N-1을 하면 되지만,
//M>1부터는 세로 자르는 횟수가 M만큼 곱해진다. 그러므로 (N-1)*M

문자열 밀기

//내 코드
function solution(A, B) {
    if(A===B) return 0;
    let count=0;
    let a = [...A];
    for(let i=A.length-1; i>=0; i--){
        a.unshift(a.pop());
        count++;
        if(a.join('')===B) return count;
    }
    return -1;
}

//다른 사람 코드
let solution=(a,b)=>(b+b).indexOf(a)
//b를 두번 반복시킨 다음 a가 그 안에 있는지 찾아보면
//밀었을 때 그 글자를 만들 수 있는지 알 수 있다.
//indexOf 자체가 값이 없으면 -1을 출력해 주기 때문에 간결하고 이해하기 쉬운 코드라고 느껴진다.

다음에 올 숫자

//내 코드
function solution(common) {
    if(common[1] - common[0] === common[common.length-1] - common[common.length-2]){
        return common[common.length-1] + (common[1] - common[0]);
    }else if(common[0] !== 1){
        return common[common.length-1] * (common[0]);
    }else return common[common.length-1] * (common[1]);
}
//등차수열 : 0번째와 1번째 요소의 차이 = 마지막요소와 마지막 전 요소의 차이가 같다.
//마지막요소와 (0번째와 1번째 요소의 차이)를 더해서 리턴
//등비수열 : 등차수열이 아닌 것
//마지막요소와 0번째 요소를 곱해주어 리턴

//다른 사람 코드
function solution(common) {
    if ((common[1]-common[0])==(common[2]-common[1])){
        return common.pop() + common[1] - common[0];
    }
    else{
        return common.pop()*common[1]/common[0];
    }
}
//꼭 마지막 숫자와 비교하지 않아도 1번째와 2번째의 차이랑 비교해도 된다.
//그리고 마지막 숫자는 common.pop()으로 불러와도 된다.
//첫번째 요소가 1일수도, 아닐수도 있으므로 나는 2개의 케이스로 나눴는데,
//이 분은 1이든 2든 상관없게 1번째요소를 0번째 요소로 나누고 맨 뒤의 요소를 곱하였다.

연속된 수의 합

//내 코드
function solution(num, total) {
    //total/num이 배열의 중간값이므로 초기값은 num/2를 뺀 값이다.
    //(15/5 - 5/2) = 1(초기값)
    const min = Math.ceil(total / num - Math.floor(num / 2));

  // Array() 메서드를 이용해 배열의 길이는 num,
  //구해둔 초기값 부터 하나씩 더해 요소를 num까지 채워준다.
  return Array(num).fill().map((_, i) => i + min);
}
profile
신입 프론트엔드 웹 개발자입니다.

0개의 댓글