10부제 JavaScript 풀이: 끝자리 비교로 위반 차량 수 세기

2026.09.01·수정 2026.09.13·약 4분·작성: 해비·블로그 소개

먼저 직접 풀어보세요

문제 원문을 확인한 뒤 직접 풀이해 보세요. 해설과 정답은 아래 접힌 영역에서 확인할 수 있습니다.

문제

문제명: 10부제
출처: 한국정보올림피아드
문제 설명:
서울시는 6월 1일부터 교통 혼잡을 막기 위해 자동차 10부제를 시행합니다. 자동차 번호의 일의 자리 숫자와 날짜의 일의 자리 숫자가 일치하면 해당 자동차의 운행을 금지합니다. 날짜의 일의 자리 숫자가 주어지고 7대의 자동차 번호의 끝 두 자리 수가 주어질 때, 10부제를 위반하는 자동차의 대수를 출력합니다.

입력 설명:
첫 줄에는 날짜의 일의 자리 숫자가 주어지고, 두 번째 줄에는 7대의 자동차 번호의 끝 두 자리 숫자가 주어집니다.

출력 설명:
주어진 날짜와 자동차의 일의 자리 숫자를 비교하여 10부제를 위반하는 차량의 대수를 출력합니다.

입력 예제 1:
3
25 23 11 47 53 17 33

출력 예제 1:
3

입력 예제 2:
0
12 20 54 30 87 91 30

출력 예제 2:
3

추가 제한 사항

없음

기준 끝자리와 각 차량의 끝자리를 비교해 일치한 항목만 세는 흐름

풀이와 정답

풀이와 정답 보기 (클릭)

이 문제는 각 차량 번호의 일의 자리가 날짜의 일의 자리와 같은지만 확인하면 됩니다. 차량 번호 끝 두 자리 수가 23이라면 비교할 값은 23 전체가 아니라 23 % 10으로 구한 3입니다.

풀이 방법

  1. 첫 번째 입력값을 기준 숫자 target으로 저장합니다.
  2. 차량 번호를 하나씩 순회합니다.
  3. car % 10 === target이면 정답을 1 증가시킵니다.
  4. 모든 차량을 확인한 뒤 정답을 출력합니다.

예제 1에서 기준은 3이고, 23, 53, 33의 일의 자리가 3이므로 정답은 3입니다. 기준이 0인 경우도 같은 방식으로 처리할 수 있어 별도의 예외 처리가 필요하지 않습니다.

각 값의 마지막 부분을 분리해 기준값과 비교하고 결과를 모으는 과정

JavaScript 풀이

const fs = require('fs');

const input = fs
  .readFileSync(0, 'utf8')
  .trim()
  .split(/\s+/)
  .map(Number);

const target = input[0];
const cars = input.slice(1);

let answer = 0;

for (const car of cars) {
  if (car % 10 === target) {
    answer += 1;
  }
}

console.log(answer);

/\s+/ 정규식은 공백과 줄바꿈이 섞인 입력을 공백 문자 기준으로 나눕니다. 이후 map(Number)로 숫자로 변환하고, 차량마다 % 10을 적용해 일의 자리만 비교합니다.

복잡도

차량 수를 n이라고 하면 각 차량을 한 번씩 확인하므로 시간 복잡도는 O(n)입니다. 문제에서는 차량이 7대로 고정되어 있지만, 배열 전체를 순회하는 형태로 작성하면 입력 개수가 달라져도 같은 코드 구조를 사용할 수 있습니다.

풀이 전에 확인할 순서

  1. 입력값과 출력값을 한 문장으로 다시 적습니다.
  2. 반복할 대상과 비교·저장할 값을 정합니다.
  3. 필요한 자료구조와 시간복잡도를 예상합니다.
  4. 코드를 보기 전에 손으로 작은 예제를 계산합니다.
힌트: 10부제 JavaScript 풀이: 끝자리 비교로 위반 차량 수 세기

정답 코드를 바로 따라 쓰기보다, 본문에서 값이 갱신되는 조건과 반복 범위를 먼저 찾으세요. 반복 한 번마다 반드시 유지되어야 하는 값이 무엇인지 적으면 풀이의 중심 변수를 고르기 쉽습니다.

테스트 확인

  • 가능한 가장 작은 입력
  • 같은 값이나 문자가 반복되는 입력
  • 정답이 처음 또는 마지막 위치에서 결정되는 입력
  • 입력 제한에 가까운 경우의 실행 시간

확인 결과: 본문의 예제뿐 아니라 위 경계 사례에서도 예상값과 실제 출력이 같아야 풀이가 완료됩니다.

이 글이 도움이 되었나요?

조회 중

코딩테스트 JavaScript 학습 순서

필수 49개 · 전체 49개

읽음 기록 관리

전체 과정 목차 (49개)
  1. 필수 길잡이 · 코딩테스트 JS 자료구조 로드맵: 배열, 해시, 스택, 투 포인터 순서
  2. 필수 학습 · 세 수 중 최솟값 JavaScript 조건문 풀이 정리
  3. 필수 학습 · 삼각형 판별하기 JavaScript 풀이
  4. 필수 학습 · 연필 개수 JavaScript 풀이
  5. 필수 학습 · 1부터 N까지 합 출력하기 JavaScript 풀이
  6. 필수 학습 · 최솟값 구하기 JavaScript 풀이|배열 순회와 비교 갱신 원리
  7. 필수 학습 · 홀수 JavaScript 풀이: 조건 판별과 결과 처리 정리
  8. 필수 학습 · 10부제 JavaScript 풀이: 끝자리 비교로 위반 차량 수 세기 현재 글
  9. 필수 학습 · A를 #으로 JavaScript 풀이: 문자열 순회와 치환
  10. 필수 학습 · 문자 찾기 JavaScript 풀이: 문자열 순회로 개수 세기
  11. 필수 학습 · 대문자 찾기 JavaScript 풀이
  12. 필수 학습 · 대문자로 통일 JavaScript 풀이
  13. 필수 학습 · 대소문자 변환 JavaScript 풀이
  14. 필수 학습 · 일곱 난쟁이 JavaScript 풀이: 두 명을 제외하는 완전탐색
  15. 필수 학습 · 코딩테스트 JS Map 풀이: 학급 회장 득표수 세기
  16. 필수 학습 · 코딩테스트 JS 스택 풀이: 올바른 괄호 검증하기
  17. 필수 학습 · 코딩테스트 JS 스택 풀이: 괄호문자 제거하기
  18. 필수 학습 · 코딩테스트 JS 스택 풀이: 크레인 인형뽑기 처리법
  19. 필수 학습 · 코딩테스트 JS 스택 풀이: 후위식 연산 계산하기
  20. 필수 학습 · 코딩테스트 JS 스택 풀이: 쇠막대기 레이저 절단 개수 세기
  21. 필수 학습 · 코딩테스트 JS 투 포인터 풀이: 두 정렬 배열 합치기
  22. 필수 학습 · 코딩테스트 JS 투 포인터 풀이: 공통 원소 추출하기
  23. 필수 학습 · 코딩테스트 JS 슬라이딩 윈도우 풀이: 최대 매출 구간 합 계산하기
  24. 필수 학습 · JavaScript 투 포인터: 합이 M인 연속 부분수열 개수
  25. 필수 학습 · 코딩테스트 JS 해시 풀이: 모든 아나그램 찾기
  26. 필수 학습 · 가장 긴 문자열 JavaScript 풀이
  27. 필수 학습 · 가운데 문자 출력 JavaScript 풀이
  28. 필수 학습 · 중복문자제거 JavaScript 풀이
  29. 필수 학습 · 코딩테스트 JS 고급: 최소 힙으로 다익스트라 최단 경로 구하기
  30. 필수 학습 · 코딩테스트 JS Union-Find: 연결 성분 수와 크기 구하기
  31. 필수 학습 · 코딩테스트 JS Trie: 접두사에 맞는 단어 수 세기
  32. 필수 학습 · 코딩테스트 JS Fenwick Tree: 값 갱신과 구간 합 처리
  33. 필수 학습 · 코딩테스트 JS 세그먼트 트리: 단일 대입과 구간 합
  34. 필수 학습 · 코딩테스트 JS LRU 캐시: 지도 타일 재사용 기록
  35. 필수 학습 · 코딩테스트 JS AVL 트리: 기준 이상 최솟값 찾기
  36. 필수 학습 · 코딩테스트 JS 큐: 상담 창구 대기열 명령 처리
  37. 필수 학습 · 코딩테스트 JS 연결 리스트: 재생 대기 목록 관리
  38. 필수 학습 · JavaScript 원형 덱 연습: 최근 기록 창과 되돌리기
  39. 필수 학습 · JavaScript 해시 테이블 연습: 정규화 문자열 빈도와 등장 순서
  40. 필수 학습 · JavaScript 트리 순회 연습: 깊이별 노드 묶기
  41. 필수 학습 · JavaScript BST 연습: 닫힌 구간의 중복 키 보고서
  42. 필수 학습 · JavaScript 최소 힙 연습: 동률 순서를 지키는 작업 스케줄러
  43. 필수 학습 · JavaScript 그래프 연습: 연결 구역 크기를 작은 순서로 출력하기
  44. 필수 학습 · 중복단어제거 JavaScript 풀이
  45. 필수 학습 · TypeScript 이진 탐색 연습: 숫자 카드 존재 여부 확인
  46. 필수 학습 · 큰 수 출력하기 JavaScript 풀이
  47. 필수 학습 · 보이는 학생 JavaScript 풀이
  48. 필수 학습 · 가위바위보 JavaScript 풀이
  49. 필수 학습 · 점수계산 JavaScript 풀이

새 글 받아보기

RSS 리더에서 BlogFlow의 새 글을 확인할 수 있습니다.

RSS 피드 구독하기

댓글 남기기