등수 매기기

영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 2차원 정수 배열 score가 주어질 때, 영어 점수와 수학 점수의 평균을 기준으로 매긴 등수를 담은 배열을 return하도록 solution 함수를 완성해주세요.

function solution(score) {
    //기존 인덱스와 평균을 가진 배열로 바꾸고 평균을 기준으로 정렬
    let scoreSort = score.map(function (x, idx) {
        return [idx, (x[0] + x[1]) / 2]
    }).sort((x, y) => y[1] - x[1]);

    let answer = new Array(score.length);
    let rank = 1;
    let rankDup = 0;

    for(let i = 0; i < scoreSort.length - 1; i++) {
        answer[scoreSort[i][0]] = rank;

        //중복되면 중복카운트만 올리고, 
        //다음 숫자가 달라지면 중복카운트도 같이 더하기
        if(scoreSort[i][1] === scoreSort[i + 1][1]) {
            rankDup += 1;
        } else {
            rank += 1 + rankDup;
            rankDup = 0;
        }
    }

    answer[scoreSort[scoreSort.length - 1][0]] = rank;

    return answer;
}

옹알이 (1)

머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

function solution(babbling) {
    //네 가지 발음을 공백으로 치환하고,
    //남아있는게 없다면 발음할 수 있는 단어
    return babbling.map((x) => x.replaceAll(/(aya)|(ye)|(woo)|(ma)/g, '')).filter((x) => x === '').length;
}

로그인 성공?

머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요.

  • 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다.
  • 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다.
function solution(id_pw, db) {
    let answer = {};

    //객체로 만들기
    for(let i of db) {
        answer[i[0]] = i[1];
    }

    return answer[id_pw[0]] === id_pw[1] ? 'login' : answer[id_pw[0]] === undefined ? 'fail' : 'wrong pw';
}

'코딩테스트' 카테고리의 다른 글

뇌주름 살리기 - 22 (입문캘린더 종료)  (0) 2025.02.16
뇌주름 살리기 - 21  (0) 2025.02.08
뇌주름 살리기 - 19  (0) 2025.02.04
뇌주름 살리기 - 18  (0) 2025.02.02
뇌주름 살리기 - 17  (0) 2025.01.31

+ Recent posts