고양이와 코딩

[프로그래머스] 12월11일 ~ 12월17일 본문

javascript

[프로그래머스] 12월11일 ~ 12월17일

ovovvvvv 2023. 12. 11. 18:21
728x90

12월11일

전국 대회 선발 고사

 

아.. 모르겠다 !! 인덱스를 가지고 값을 찾는다 ==> 이게 너무너무너무 헷갈리고 도저히 모르겠음..
익숙해지지 않아서라고 위로하고 있지만 ㅎㅎ .,, 결국 못풀었다!

구글에서 가장 이해가 잘되게 풀이하신 분걸로 제출했다

 

풀이

function solution(rank, attendance) {
    let answer = [];
    
    for(let i = 0; i < rank.length; i++){
        if(attendance[i]) {
            answer.push(rank[i]);
        }
    }
    answer.sort((a,b) => a - b);
    
    function Participant(idx){
        return rank.indexOf(answer[idx]);
    }
    return 10000 * Participant(0) + 100 * Participant(1) + Participant(2);
}

저 return 부분이!! 머리로는 이렇게 해야한다는걸 알고 있는데 도저히 어떻게 해야할지 생각이 안나서.. ㅋ

Participant 함수는 answer 배열 내의 등수에 해당하는 값을 rank 배열에서 찾아서 해당 값의 인덱스를 반환한다!

 

 

문자열 정수의 합

 

내 풀이

function solution(num_str) {
    const split_str = num_str.split('');
    const answer = split_str.reduce((acc, curr) => {
        return parseInt(acc) + parseInt(curr);
    }, 0);
    
    return answer;
}

 

 

두 수의 합

두 번째 예시같은 수는 int나 number로는 표현할 수 없는 큰 수기 때문에 BigInt로 사용해 주어야 한다.

 

내 풀이

function solution(a, b) {
    var sum = BigInt(a) + BigInt(b);
    return String(sum);
}

 

 

12월12일

문자열로 변환

 

내 풀이

function solution(n) {
    return String(n);
}

이건 어떻게 다르게 풀 수 있지? 하고 다른 사람의 풀이 찾아봤는데

 

const solution = String

....

 

 

배열의 원소 삭제하기

 

내 풀이

function solution(arr, delete_list) {
    const result = arr.filter(value => !delete_list.includes(value));

    return result;
}

 

 

부분 문자열인지 확인하기

 

내 풀이

function solution(my_string, target) {
    return my_string.includes(target) ? 1 : 0;
}

 

 

12월14일

꼬리 문자열

 

내 풀이

function solution(str_list, ex) {
    var answer = '';
    
    let filtered_list = str_list.filter(item => !item.includes(ex));
    answer = filtered_list.join('');

    return answer;
}

 

 

12월14일

주사위 게임1

 

내 풀이

function solution(a, b) {
    var answer = 0;
    
    if (a % 2 !== 0 && b % 2 !== 0){
        return a*a + b*b;
    } else if (a % 2 !== 0 && b % 2 === 0 || a % 2 === 0 && b % 2 !== 0){
        return 2 * (a + b)
    } else {
        return Math.abs(a - b)
    }
}

 

 

날짜 비교하기

 

내 풀이

function solution(date1, date2) {
    const [year1, month1, day1] = date1;
    const [year2, month2, day2] = date2;
    
    const date_1 = new Date(year1, month1 - 1, day1);
    const date_2 = new Date(year2, month2 - 1, day2);
    return date_1 < date_2 ? 1 : 0;
}

날짜로 변환해주는 함수가 있을 것 같아서 찾아봤다. new Date를 사용해서 배열 안의 요소들을 날짜로 변환 해줄수 있었는데
더 짧게 풀 수 있을 것 같아서 다른 풀이도 봤다 ㅎㅎ

 

다른 사람의 풀이 

const solution = (date1, date2) => new Date(date1) < new Date(date2) ? 1 : 0

 

 

커피 심부름

 

내 풀이

function solution(order) {
    var answer = 0;
    
    order.forEach((menu) => {
      if (menu === "anything" || menu.includes("americano")){
          answer += 4500;
      } else {
          answer += 5000
      }
    })
    return answer;
}

뭐 말이 많은데 그냥 가격에 집중하자

 

 

그림 확대

 

내 풀이

function solution(picture, k) {
    var answer = [];

    picture.forEach((str) => {
        let strTemp = '';

        for (let i = 0; i < str.length; i++) {
            strTemp += str[i].repeat(k);
        }

        for (let j = 0; j < k; j++) {
            answer.push(strTemp);
        }
    });

    return answer;
}

 

 

12월15일

조건에 맞게 수열 변환하기 3

 

내 풀이

function solution(arr, k) {
    return k % 2 !== 0 ? arr.map(num => num * k) : arr.map(num => num + k);
}

 

 

12월16일

l로 만들기

 

내 풀이

function solution(myString) {
    const splitStr = myString.split('');
    let answer = [];
    
    splitStr.forEach((alphabet) => {
        if (alphabet > 'l') { 
            answer.push(alphabet); 
        } else {
            answer.push('l');
        }
    });
    
    return answer.join('');
}

 

다른 사람의 풀이

function solution(myString) {
    return [...myString].map((v) => v < 'l' ? 'l' : v).join('');
}
const solution = myString => myString.replace(/[a-k]/g,'l')

 

 

특별한 이차원 배열1

이차원 배열에 약하지만!! 딱 봤을때 대각선에 있는 요소들만 1이니까. .. 
answer = []로 초기화 하고 for문을 사용해서 배열을 계속 추가해주면 되겠다는 생각을. .. 했다. 

물론 배열에 배열이 추가되는지는 지피티한테 물어봄 ㅎㅎ

 

내 풀이

function solution(n) {
    var answer = [];
    
    for (let i = 0; i < n; i++){
        const row = Array(n).fill(0);
        row[i] = 1;
        answer.push(row);
    }
    return answer;
}

row 배열을 0으로 전부 채우고, 인덱스에 해당하는 자리만 1로 바꿔준다!

row = [1, 0, 0] 일때 answer에 추가하고 ... 이런식으로 ㅎㅎ