[프로그래머스 자바스크립트] 코딩테스트 입문 Day 4,5 풀어보기

2024. 2. 10. 16:08·Algorithm/Programmers(JavaScript)

Day 4


피자 나눠먹기(1)

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

function solution(n) {
    
    // n을 7로 나눈 나머지를 integerCheck 변수에 저장
    let integerCheck = n % 7;
    
    let answer = 0;
    
    // integerCheck가 0이라면 피자는 n / 7개가 필요하다.
    // 예시: 피자를 나눠먹을 사람이 21명이면 피자는 3판이 필요하다.
    if (integerCheck === 0) {
        answer = n / 7;
    }    
    
    // integerCheck가 0이 아니라면 피자는 n / 7의 몫 + 1개가 필요하다.
    // 예시: 피자를 나눠먹을 사람이 22명이면 피자는 3판 + 1판이 필요하다.
    else {
        answer = Math.floor(n / 7) + 1;
    }
    
    return answer;
}

 

번외: ceil을 써서 풀 수 있다. (ceil은 올림을 할 수 있다.)

function solution(n) {
    return Math.ceil(n / 7)
}

피자 나눠먹기(2)

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

function solution(n) {
    
    // 최대공약수 구하기
    let gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));
    
    // 최소공배수: 두 수를 곱한 값을 최대공약수로 나눈 수
    let lcm = n * 6 / gcd(n, 6);
    
    // 정답: 최소공배수를 6으로 나눈 수
    let answer = lcm / 6;
    
    return answer;
}

피자 나눠먹기(3)

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

function solution(slice, n) {
    
    // isInteger = n을 slice로 나누었을 때 나머지
    let isInteger = n % slice;
    let answer = 0;
    
    // n을 slice로 나누었을 때 나머지가 0이면 정답은 n / slice이다.
    if(isInteger === 0) {
        answer = n / slice; 
    }
    
    // 나머지가 0이 아니라면 n을 slice로 나눈 몫에 1을 더해준 값이 정답이다.
    else {
        answer = parseInt(n / slice) + 1;
    }
    
    return answer;
}

 

피자 나눠먹기(1)처럼 그냥 ceil을 써서 올림을 하면 훨씬 쉽게 풀 수 있었다…

function solution(slice, n) {
    return Math.ceil(n / slice)
}

배열의 평균값

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

function solution(numbers) {
    
    let sum = 0;
    
    // 배열을 순회하면서 배열값을 sum에 더해준다.
    for(let i = 0; i < numbers.length; i++) {
       sum += numbers[i];
        
    }
    
    // sum을 배열의 길이에 나눠준 값이 평균이다.
    let answer = sum / numbers.length;
    
    return answer;
}

 

reduce를 활용하여 훨씬 간단하게 표현할 수 있었다.

function solution(numbers) {
    var answer = numbers.reduce((a,b) => a+b, 0) / numbers.length;
    return answer;
}

Day 5


옷가게 할인 받기

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

단순한 if문의 반복으로 풀 수 있다.

function solution(price) {
    
    // 10만원 이상 사면 5% 할인
    if(price >= 100000 && price < 300000) {
       return Math.floor(price * 0.95);
    }
    
    // 30만원 이상 사면 10% 할인
    else if(price >= 300000 && price < 500000) {
        return Math.floor(price * 0.9);
    }
    
    // 50만원 이상 사면 20% 할인
    else if(price >= 500000) {
        return Math.floor(price * 0.8);
    }
    
    // 할인 미적용
    else {
        return price;
    }
}

아이스 아메리카노

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

몫과 나머지를 구하면 되는 쉬운 문제였다.

function solution(money) {
    
    // 최대로 마실 수 있는 아메리카노 잔 수 
    let coffee_count = parseInt(money / 5500);
    
    // 남는 돈
    let left_money = money % 5500;
    
    let answer = [coffee_count, left_money];
    return answer;
}

나이 출력

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

그냥 2022년에서 나이를 빼고 1 더해주면 된다.

function solution(age) {
    return 2022 - age + 1;
}

배열 뒤집기

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

그냥 reverse를 넣어봤더니 맞았다. 너무 허무한데…? 출제자의 의도는 reverse를 쓰는 것이 아니었을 것 같다.

function solution(num_list) {
    return num_list.reverse();
}

 

‘다른 사람의 풀이’에서 본 코드. 이렇게 푸는 것이 아마 정석일 것이다.

function solution(num_list) {
    var answer = [];
    var j = num_list.length
    for(var i = 1; i <= j; i++){
        answer.push(num_list[j-i])
    }
    return answer;
}

 

sort를 이용해서도 풀 수 있었다.

function solution(num_list) {
    return num_list.sort((a, b) => -1);
}

 


 

 

하루에 2일치에 해당하는 문제를 도전과제로 보여준다. 아직까지는 문제들이 쉬워서 빠르게 풀고 있다. 한 문제 푸는데 30초 정도 걸리는 정도? ‘기초 문제’로 넘어가야하나 싶기도 하고. 하지만 중요한 것은 얼마나 어려운 문제를 푸는 것이 아닌, 꾸준하게 문제를 푸는 것이라고 생각하고 있기에 일단 차근차근 스케줄을 따라가 보려 한다. 아마 다른 거 하느라 문제 하루 치를 다 못 푸는 날들도 있을 것이다. 계속 해가면서 자바스크립트 문법에 익숙해지자.

 

 

저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Programmers(JavaScript)' 카테고리의 다른 글

[프로그래머스 자바스크립트] '폰켓몬' 풀어보기  (2) 2024.07.16
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 9,10 풀어보기  (1) 2024.02.14
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 8 풀어보기  (0) 2024.02.13
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 6,7 풀어보기  (2) 2024.02.13
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 1,2,3 풀어보기  (1) 2024.02.10
'Algorithm/Programmers(JavaScript)' 카테고리의 다른 글
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 9,10 풀어보기
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 8 풀어보기
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 6,7 풀어보기
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 1,2,3 풀어보기
퀵차분
퀵차분
Web Developer 🥐
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (178)
      • Frontend (31)
      • Fedify (4)
      • Study (42)
        • NestJS (2)
        • Node.js (3)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (21)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (10)
        • crohasang_page (3)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프론트엔드
    리액트
    javascript
    fedify
    인공지능
    타입스크립트
    음악추천
    백준
    HTML
    시스템프로그래밍
    typescript
    KUIT
    프로그래머스
    알고리즘
    자바스크립트
    프로그래머스 자바스크립트
    오블완
    react
    티스토리챌린지
    next.js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 4,5 풀어보기
상단으로

티스토리툴바