사담

설날 연휴가 끝났고 어느새 날씨는 봄이랑 비슷해졌다. 아니 이러기 있나? 저번주 목요일에 언니들이랑 놀러 나갔을 때는 너무 추워서 발발 떨었던 기억이 있는데 말이다. 연휴 끝나자마자 이렇게 딱 봄 되기 있나? 하,, 오늘 롱패딩 입었는데 속에 니트라서 덥다.

프로그래머스 코딩테스트



문제 1. 피자 나눠 먹기(2)


머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

function solution(n) {
    var answer = 0;
    let pizzas = 1;
    let slices = 6; 
    
    while (slices % n !== 0) {
        pizzas++;
        slices += 6;
    }
    
    answer = pizzas;
    
    return answer;
}

설명: 전체 조각을 n으로 나눈 값이 0이어야 한다. 이때 초기값인 pizzas는 최소 1판부터 시작하기 때문에 1로 설정해주어야한다.


문제 2. 369게임


머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.

function solution(order) {
    var answer = 0;
    let orderArray = Array.from(String(order), Number)
    
    for(let i =0; i<orderArray.length; i++){
        if(orderArray[i] === 3){
            answer += 1;
        } else if (orderArray[i] === 6){
            answer += 1;
        } else if (orderArray[i] === 9){
            answer += 1;
        }
    }
    
    return answer;
}

설명: order를 배열로 바꿔버리고 반복문을 돌려 그 안에서 3, 6, 9를 찾았다. (조금 과하게 단순한 것 같기도)


문제 3. 문자열 정렬하기(2)


영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.

function solution(my_string) {
    var answer = '';
    my_string = my_string.toLowerCase();
    let Arr = my_string.split('');
    Arr.sort(function(a, b) {
        return a.localeCompare(b);
    });
    
    answer = Arr.join('');
    
    return answer;
}

설명: 일단 my_string을 .toLowerCase()를 통해 전부 소문자로 바꿔주었다. 이후 Arr에 my_string을 .split하여 배열로 만들었고 sort를 통해 정렬하였다. a.localeCompare(b)를 사용하면 정렬할 수 있다.


문제 4 - 합성수 찾기


약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.

function solution(n) {
    var answer = 0;
    
    for (let i=0; i<=n; i++){
        let habsung = 0;
        
        for(let j=0; j<=i; j++){
            if(i%j === 0){
                habsung +=1;
            }
        }
        
        if(habsung >=3){
            answer +=1;
        }
    }
    
    return answer;
}

설명: 반복문을 두 번 돌렸다. n이라는 숫자만큼 i를 증가시키고, 그 i의 약수를 판별해 그게 3개 이상이면 answer에 추가하는 형식이다.


문제 5 - 중복된 문자열 제거


문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.

function solution(my_string) {
    var answer = '';
    let Arr = my_string.split('')
    Arr = [...new Set(Arr)];
    answer = Arr.join('')
    
    return answer;
}

설명: split를 사용해서 Arr를 만들어주고, 그 new Set을 통해 배열을 그냥 새로 만들어주었다.


Jeong

예술, 코딩, 그리고 삶