알고리즘

[프로그래머스 level.1] 06.19

고래강이 2023. 6. 19. 11:50

최소직사각형

더보기

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

내가 쓴 코드

function solution(sizes) {
    let width = [];
    let height = [];
    for(let i = 0; i < sizes.length; i++) {
        const max = Math.max(sizes[i][0], sizes[i][1]);
        const min = Math.min(sizes[i][0], sizes[i][1]);
        width.push(max);
        height.push(min)
    }
    const answer = Math.max(...width) * Math.max(...height)
    return answer
}

처음에는 정렬을 해서 첫번째 인덱스와 두번째 인덱스를 구성하는 리스트를 만들고 크고 작은 수를 뽑아내려했는데 생각해보니까 숫자가 2개여서 정렬하는데 Math.max && min을 쓰니깐 그냥 되는것을 깨닫고 처리를 하였다

 


3진법 뒤집기

 

https://school.programmers.co.kr/learn/courses/30/lessons/68935

 

내가 쓴 코드

function solution(n) {
    var answer = 0;
    n = n.toString(3);
    n = [...n].reverse().join("")
    n = parseInt(n, 3);
    return n;
}

10진법 -> 3진법   n.toString(3);              3진법 -> 10진법  parseInt(n, 3);


같은 숫자는 싫어

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

 

내가 쓴 코드

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

일일히 전개를 하면서 풀었는데 생각해보니 map과 filter를 비롯해서 index값을 가지고 있는 녀석들이 있었다 이녀석들을 이용하니깐 밑에처럼 엄청 간단하게 결과가 나왔다 충격... ㄷㄷ

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