프로그래머스 - 2019 카카오 개발자 겨울 인턴십 Lv3

불량 사용자 ( _JS )

 

문제 설명

 

제한 사항

 

입출력 예


문제 링크

https://programmers.co.kr/learn/courses/30/lessons/64064?language=javascript 

 

코딩테스트 연습 - 불량 사용자

개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량

programmers.co.kr


코드

2022. 01. 11.

function solution(user_id, banned_id) {
    
const prediction_list = banned_id.map( banned => user_id.filter( user => {
        if( user.length !== banned.length ){
            // 길이가 다르면 제거
            return false;
        }
        else{
            // 길이가 같음
            for(let i = 0 ; i < banned.length ; i++){
                if( banned[i] !== '*' && user[i] !== banned[i] ){
                    // banned[i] 값이 *이 아닌데 user[i]랑 값이 동일하지 않으면 제거
                    return false;
                }
            }
            return true;
        }
    }));
const ansList = {};
    const choose = (idx = 0, choosed = []) => {
        if (idx === prediction_list.length) {
            choosed.sort();
            ansList[choosed.join('')] = true;
            return
        }

        prediction_list[idx].forEach(s => {
            if (!choosed.includes(s))
                choose(idx + 1, [...choosed, s])
        })
    }
    choose()
    return Object.keys(ansList).length;
}

 


728x90

프로그래머스 - 정렬 Lv2

가장 큰 수 ( _JS )

 

문제 설명

 

제한 조건

 

입출력 예


문제 링크

https://programmers.co.kr/learn/courses/30/lessons/42746?language=javascript 

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr


코드

2022. 01. 11.

function solution(numbers) {
    
    var answer = numbers.map(c=> c + '').
    				sort((a,b) => (b+a) - (a+b)).join('');
    
    return answer;
}

728x90

프로그래머스 - 문자열 lv1

크레인 인형뽑기 게임 (_JS)

 

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/64061

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

 

제한 사항

  • board 배열은 2차원 배열로 크기는 "5 x 5" 이상 "30 x 30" 이하입니다.
  • board의 각 칸에는 0 이상 100 이하인 정수가 담겨있습니다.
    • 0은 빈 칸을 나타냅니다.
    • 1 ~ 100의 각 숫자는 각기 다른 인형의 모양을 의미하며 같은 숫자는 같은 모양의 인형을 나타냅니다.
  • moves 배열의 크기는 1 이상 1,000 이하입니다.
  • moves 배열 각 원소들의 값은 1 이상이며 board 배열의 가로 크기 이하인 자연수입니다.
  •  

입출력 예


코드

2022.01.17.

function solution(board, moves) {
    var answer = 0;

    let stack = [];

    moves.forEach( move => {
        let flag = true;
        let stackLen = stack.length;
        stack = SameChecking(stack);

        if( stackLen !== stack.length ){
            answer += 2;
        }

       board.forEach( x => {
           if(flag){
               if( x[move-1] !== 0 ){
                   stack.push(x[move-1]);
                   x[move-1] = 0;
                   flag = false;
               }
           }
           else{
               return false;
           }
       });
    });

    return answer;
}

function SameChecking(stack){
    let prevItem = 0;
    stack.forEach( ( item, index ) => {
        if( prevItem === item ){
            stack.splice(index-1, 2);
            return stack;
        }

        prevItem = item;

    });

    return stack;
}

 

728x90

프로그래머스 - 완전탐색 Lv1

모의고사 ( _JS )

문제 설명

 

제한 조건

 

입출력 예시

 

https://programmers.co.kr/learn/courses/30/lessons/42840?language=javascript 

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr


코드

2022.01.11.

function solution(answers) {
    var answer = [];
    
    const answer1 = [ 1,2,3,4,5 ];
    const answer2 = [ 2,1,2,3,2,4,2,5];
    const answer3 = [ 3,3,1,1,2,2,4,4,5,5 ];
    
    const Correct1 = compare(answers, answer1);
    const Correct2 = compare(answers, answer2);
    const Correct3 = compare(answers, answer3);

    const CorrectArray = [ Correct1, Correct2, Correct3 ];
    
    const correctMax = Math.max(...CorrectArray);
    
    CorrectArray.forEach(function(answers, index){
        if( correctMax === answers ){
            answer.push(index+1);
        }         
    });
    
    return answer;
}

function compare(answers, studentAnswer){
  
    let correct = 0;
    
    answers.forEach(function(answer, index){
        index = index % studentAnswer.length
        if( answer === studentAnswer[index]){
            correct++;
        }
    
    });
    return correct;
};

코드 설명

728x90

+ Recent posts