본문 바로가기
Algorithm/JavaScript

[basics] 10부제

by _sweep 2021. 12. 5.

자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다.

 

 

 

 

📋 문제

서울시는 6월 1일부터 교통 혼잡을 막기 위해서 자동차 10부제를 시행한다. 자동차 10부제는 자동차 번호의 일의 자리 숫자와 날짜의 일의 자리 숫자가 일치하면 해당 자동차의 운행을 금지하는 것이다. 예를 들어, 자동차 번호의 일의 자리 숫자가 7이면 7일, 17일, 27일에 운행하지 못한다. 또한, 자동차 번호의 일의 자리 숫자가 0이면 10일, 20일, 30일에 운행하지 못한다.

여러분들은 일일 경찰관이 되어 10부제를 위반하는 자동차의 대수를 세는 봉사활동을 하려고 한다. 날짜의 일의 자리 숫자가 주어지고 7대의 자동차 번호의 끝 두 자리 수가 주어졌을 때 위반하는 자동차의 대수를 출력하면 된다. 

 

 

👉 입력

첫 줄에는 날짜의 일의 자리 숫자가 주어지고 두 번째 줄에는 7대의 자동차 번호의 끝 두 자리 수가 주어진다.

 

 

👈 출력

주어진 날짜와 자동차의 끝 두 자리 수를 보고 10부제를 위반하는 차량의 대수를 출력한다.

 

 

📝 풀이

 

<script>
    function solution(day, arr) {
        let answer = 0;
        answer = arr.filter((n) => n % 10 === day).length;
        return answer;
    }

    arr = [12, 20, 54, 30, 87, 91, 30];
    console.log(solution(0, arr));
</script>

 

자동차 번호의 일의 자리 수와 날짜의 일의 자리 수가 일치하면 이는 10부제를 위반한 차량이다.

따라서 filter를 이용해 arr 배열을 순회하며 10으로 나눈 나머지가 day와 같은 요소들을 골라낸 후 이 값들의 개수를 출력한다.

 

<script>
    function solution(day, arr) {
        let answer = 0;
        for (const num of arr) {
            if (num % 10 === day) answer++;
        }
        return answer;
    }

    arr = [12, 20, 54, 30, 87, 91, 30];
    console.log(solution(0, arr));
</script>

 

다른 방법으로는 for of문을 이용해 값을 순회하며 if문에서 해당 조건이 충족하는 값을 찾으면 answer에 1을 더해나가는 방법도 있다.

 

 

+) 이 문제는 백준의 10797번 문제와 유사하다.

https://cansweep.tistory.com/193

 

[10797번] 10부제

문제 링크 >> https://www.acmicpc.net/problem/10797 📋 문제 서울시는 6월 1일부터 교통 혼잡을 막기 위해서 자동차 10부제를 시행한다. 자동차 10부제는 자동차 번호의 일의 자리 숫자와 날짜의 일의 자리

cansweep.tistory.com

 

 

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

[basics] A를 #으로  (0) 2021.12.05
[basics] 일곱 난쟁이  (0) 2021.12.05
[basics] 홀수 합과 최솟값  (0) 2021.12.05
[basics] 최솟값 구하기  (0) 2021.12.05
[basics] 1부터 N까지의 합  (0) 2021.12.05

댓글