(JS) 백준 13458번 : 시험 감독 - 백준의 입력값 처리

2025. 1. 13. 01:13·컴퓨터 과학/백준 문제풀이
더보기

13458번: 시험 감독

문제를 풀기위해 아래와 같은 요소들을 고려하였다.

  1. 프로그래머스와 달리 백준은 입력값을 직접 처리해주어야 한다. (readline or fs)
  2. 총감독관 혼자 감독할 수 있는 경우와 부감독관이 필요한 경우로 나누어서 계산했다.

 

1. 소스코드

더보기
const readline = require("readline");

function solution(data) {
    const [n, ai, count] = data.split("\n");
    const st = ai.split(" ").map(Number);
    const [b, c] = count.split(" ").map(Number);
    let total = 0;

    for (let i = 0; i < Number(n); i++) {
        if (st[i] <= b) {
            total++;
            continue;
        }
        const nowSt = st[i] - b;
        const subTotal = Math.ceil(nowSt / c);
        total += subTotal + 1;
    }

    return total;
}

const input = [];
readline
    .createInterface({
        input: process.stdin,
        output: process.stdout,
    })
    .on("line", (line) => {
        input.push(line);
    })
    .on("close", () => {
        const data = input.join("\n");
        console.log(solution(data));
    });

 

 

 

2. 백준의 입력값 처리

프로그래머스와 다르게 백준은 입력값을 직접 처리해주어야 한다.

 

const readline = require("readline");

function solution(data) {
	// solution 함수 내용 생략
}

const input = [];
readline
    .createInterface({
        input: process.stdin,
        output: process.stdout,
    })
    .on("line", (line) => {
        input.push(line);
    })
    .on("close", () => {
        const data = input.join("\n");
        console.log(solution(data));
    });
5
10 9 10 9 10
7 20

 

입력과정을 간단히 살펴보면 아래와 같다.

  • 값의 입력은 표준입력으로 받는다. 이 코드를 node로 실행해보면 터미널이 입력값을 받기위한상태가 된다.
  • 입력은 한줄씩 순차적으로 한다. 위 예시의 입력값이 있다면 5 => Enter => 10 9 10 9 10 => Enter => 7 20 => Enter => Ctrl+D(EOF) 순서로 입력한다. 백준에서는 이 과정이 자동으로 진행된다.
  • 입력된 값은 문자열형태로 배열에 순차적 저장된다. 이 배열값들을 그대로 활용하려면 input 배열을 사용하면 되고 문자열로 변환하여 사용하려면 join을 활용해 문자열로 변환하여 사용하면 된다.
  • console.log는 표준출력과 동일한 결과이다. output부분은 생략해도 동작에는 문제가 없다.
  •  

예시에서는 readline을 활용했고 fs를 활용하는 방법도 있다. 백준에서 node.js를 사용했을때 입력값 처리 문제로 인해 발생하는 런타임에러에 관한 아래 공지게시글을 확인하는것이 좋다.

 

백준 - Node.js 사용 시 런타임 에러(EACCES)가 발생한다면?

 

 

 

3. 조건문을 이용한 경우의수 나누기

반복문 내부는 매우 간단히 구현되어있다.

  1. 최종적으로 필요한 감독관수는 total에 저장된다. total 값의 초기값은 0이다.
  2. 총감독관 혼자 감독이 가능한경우 : total에 1을 더한뒤 현재 반복을 건너뛰고 다음 반복을 시작한다. (continue)
  3. 총감독관 혼자 감독이 불가능한 경우 : 우선 학생수에서 총감독관이 감독가능한 학생수를 뺀다. 남은 학생수를 부감독관이 감독 가능한 학생수로 나눈뒤 올림(남은 학생 감독에도 부감독관이 필요하므로)처리하여 total에 총감독관 + 부감독관의 수를 더한다.

교실수만큼 위 과정을 반복하면 최종적으로 필요한 감독관의 수를 알아낼 수 있다.

 

 

 

 

 

📖 이 글은 학습 과정에서 정리한 내용이라 부족한 점이 있을 수 있습니다.
☑️ 틀린 부분이 있다면 편하게 알려주셔도 괜찮습니다.
😊 읽어주셔서 감사합니다.

'컴퓨터 과학 > 백준 문제풀이' 카테고리의 다른 글

(JavaScript) 백준 1033번 : 칵테일 (유클리드 호제법)  (0) 2025.03.31
(JavaScript) 백준 11003번 : 최솟값 찾기  (0) 2025.03.17
(JavaScript) 백준 3190번 : 뱀 - 큐와 데크  (0) 2025.01.16
'컴퓨터 과학/백준 문제풀이' 카테고리의 다른 글
  • (JavaScript) 백준 1033번 : 칵테일 (유클리드 호제법)
  • (JavaScript) 백준 11003번 : 최솟값 찾기
  • (JavaScript) 백준 3190번 : 뱀 - 큐와 데크
가나닩
가나닩
  • 가나닩
    가나닩
    가나닩
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (67)
      • 웹 (39)
        • HTML, CSS (10)
        • JS (10)
        • Node.js (3)
        • React (8)
        • Next.js (5)
        • MongoDB (1)
        • Design (2)
      • 애플리케이션 (5)
        • Swift (4)
        • React Native (1)
      • AI (0)
        • 컴퓨터 비전 (영상처리) (0)
      • 임베디드 (4)
        • 아두이노 (0)
        • 라즈베리파이 (0)
        • 젯슨 (1)
        • 리눅스 (3)
      • 컴퓨터 과학 (18)
        • 자료구조 (0)
        • 알고리즘 • 수학 (3)
        • 백준 문제풀이 (4)
        • 프로그래머스 문제풀이 (9)
        • 기타 (2)
      • 개인 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 최근 글

  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
가나닩
(JS) 백준 13458번 : 시험 감독 - 백준의 입력값 처리
상단으로

티스토리툴바