본문 바로가기
코딩테스트

(JS) 프로그래머스 - K번째수, 같은 숫자는 싫어,P Y 갯수, 하샤드 수

by Dev_Dank 2021. 5. 25.

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

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

단순하게 반복문과 push를 사용하면 해결가능하다. 

function solution(array, commands) {
    var answer = [];
    for (let i = 0; i < commands.length; i++) {
        let arrSliced = array.slice(commands[i][0]-1, commands[i][1]).sort((a, b) => a - b)
        console.log(arrSliced)
        answer.push(arrSliced[commands[i][2] - 1])        
    }

    
    return answer;
}

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

 

코딩테스트 연습 - 같은 숫자는 싫어

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은

programmers.co.kr

나는 단순하게 반복문으로 풀었는데 다른사람의 풀이 중 1줄로 끝낸게 있어서 매우 놀랐다. 

function solution(arr)
{
    var answer = [];
    let arg = arr[0];
    answer.push(arg);
    for (let i = 1; i < arr.length; i++) {
        if (arr[i] === arg) {
            continue
        } else {
            arg = arr[i]
            answer.push(arg)
        }        
    }    
    return answer;
}

아래처럼 간단하게 한줄로 끝낼수 있다니;;;

function solution(arr)
{
   return arr.filter((val, index) => val != arr[index+1])
}

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

 

코딩테스트 연습 - 문자열 내 p와 y의 개수

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를

programmers.co.kr

 

function solution(s){
    
    let pCount = 0;
    let yCount = 0;
    
    for (let i = 0; i < s.length; i++) {
        if (s[i] === 'p' || s[i] === 'P') {
            pCount += 1
        } else if (s[i] === 'y' || s[i] === 'Y') {
            yCount += 1
        }
    }
    
    
    var answer = (pCount === yCount) ? true : false

이번에도 반복문으로 풀었는데 아래 처럼 한줄로 끝낼수 있는 방법이 있었다. 

function solution(s){
    return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length    
}

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

 

코딩테스트 연습 - 하샤드 수

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하

programmers.co.kr

이번에도 기본적인 반복문으로 풀었다. 

그런데 자바스크립트의 연산자 속성과 reduce를 사용하면 한줄로 간편하게 풀이가 가능했다. 

function solution(x) {
    return !(x % (x + "").split("").reduce((a, b) => +a + +b));
}

//변수앞의 + 연산자는 unary + 연산자로 형변환 역할
//x + "" 부분또한 문자열로 형변환 위해 사용

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

(JS) 프로그래머스 - 완주하지 못한 선수  (0) 2021.05.25
개발공부 기록 시작  (0) 2020.11.02

댓글