[프로그래머스] 1wk

선민·2023년 9월 25일
0

JS_Programmers

목록 보기
8/8

1. 배열의 유사도

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

function solution(s1, s2) {
    let answer = 0;
    for (let i = 0; i < s1.length; i++){
        for (let j = 0; j < s2.length; j++){
            if(s1[i] === s2[j]) answer++;
        }
    }
    return answer;
}

2. 다음에 올 숫자

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

function solution(common) {
    const compare = common[1]-common[0] === common[2]-common[1]
    if(compare) {
        return common[common.length-1]+common[1]-common[0]
    } else {
        return common[common.length-1]*(common[1]/common[0])
    }
}
//다른 사람 코드
function solution(common) {
  // 제한사항을 보면 common의 길이는 무조건 3이상이다.
  // 또한 등차, 등비가 아닌 경우가 없으므로
  // 인덱스 2번 1번의 차가 인덱스 1번 0번의 차와 같으면 등차수열
  // 다르면 등비수열이다.
  if (common[2] - common[1] === common[1] - common[0]) {
    // 즉, 등차는 마지막 값에 등차 값을 더해주고
    return common.pop() + common[1] - common[0];
  } else {
    // 등비는 마지막 값에 나눠서 구한 등비를 곱해주면 된다.
    // 나누셈에 ()를 친 이유는 계산 순서 때문이다.
    return common.pop() * (common[1] / common[0]);
  }
}

console.log(solution([1, 2, 3, 4])); // 5
console.log(solution([2, 4, 8])); // 16

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort ➡️ 사용한 문법


3. 특이한 정렬

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

function solution(numlist, n) {
    let result = []
    result = numlist.sort((a, b) => {
        const [numA, numB] = [Math.abs(a - n), Math.abs(b - n)];
        if(numA === numB){
            return b - a;
        }
        return numA - numB;
    })
    return result;
}
//다른 사람 풀이
function solution(numlist, n) {
    return numlist.sort((a, b) => Math.abs(a - n) - Math.abs(b - n) || b - a);
}
//sort함수를 보면 음수를 반환하면 a가 먼저, 양수면 b가 순서가 먼저 되도록 짜여져 있고, 
//b랑 a의 거리가 같은 상황 즉 Math.abs(a - n) - Math.abs(b - n)이게 0이 되는 상황이 되면 ||연산자 뒤가 실행되면서 같은 거리일 경우 
//큰 수를 먼저 나오도록 한 것
profile
안녕하세요ꯁ

0개의 댓글