연필 개수 풀이

··설명 약 5분·작성: 해비·블로그 소개

읽기 전에 알아두면 좋아요

아래 개념이 익숙하면 본문을 바로 읽으세요. 낯선 개념만 링크에서 복습하면 됩니다.

개념과 예제는 실행하지 않아도 읽을 수 있습니다. 내 컴퓨터·터미널에서 직접 실행하는 과정은 선택 실습입니다.

과정 위치와 선택 복습 안내

과정 위치: 준비와 기초 구현 · 문제

과정 위치는 이 글이 속한 묶음입니다. 이 단계의 모든 개념을 먼저 읽을 필요는 없습니다. 위에 연결한 개념 중 낯선 내용만 복습하세요. 문제의 조건·상태·갱신 순서는 익숙한 언어로 설명하면 됩니다.

JavaScript로 문법·실행 복습하기 (선택)

개념 글의 코드는 JavaScript 예시입니다. 문제 화면에서는 JavaScript·Python·Java·C++·C# 중 익숙한 언어의 함수를 작성하세요. 본문의 Node.js 입출력 예시는 로컬 실행을 위한 별도 안내입니다.

연필 개수 문제는 학생 수를 받아 어떤 단위의 묶음 수를 구하나요?

학생 수를 입력받아 한 다스 단위로 준비할 연필의 묶음 수를 구하는 문제입니다. 정수·나눗셈·나머지의 기본을 준비하고, 아래 입력·반환 계약을 확인해 직접 풀어보세요.

적용 조건·범위: 이번 대조는 원자료의 문제 조건과 예제 확인입니다. 이 글의 전체 코드를 새로 실행하거나 공식 채점에 제출한 결과를 뜻하지 않습니다. 아래 예제·자가 확인 항목은 직접 실행해 기대 출력과 비교하는 기준입니다.

공식 문서 참고: 관련 개념: MDN Math.ceil의 올림

문제

연필 개수

문제 설명
연필 1다스는 12자루입니다. 학생 1인당 연필을 1자루씩 나누어 준다고 할 때, 학생 수 N을 입력하면 필요한 연필의 다스 수를 계산하는 프로그램을 작성하세요.

입력 설명
첫 번째 줄에 1000 이하의 자연수 N이 입력됩니다.

출력 설명
첫 번째 줄에 필요한 다스 수를 출력합니다.

입력 예제 1
25

출력 예제 1
3

입력 예제 2
178

출력 예제 2
15

직접 풀어보기

먼저 선택한 언어의 입력·반환 계약에 맞춰 작성해 보세요. 힌트 받기와 정답과 비교하기는 코드를 실행하지 않는 AI 분석입니다. 해답·해설은 아래에서 필요할 때 펼칠 수 있습니다.

0 / 6,000바이트

solution(n)에 n(정수)를 전달하고 정수를 반환합니다. 아래 문제의 유효 입력 조건을 따릅니다. 표준 입력과 출력 코드는 작성하지 않습니다. Tab은 다음 항목으로 이동합니다. 입력 영역 오른쪽 아래를 끌어 높이를 조절할 수 있습니다.

비밀키·개인정보는 입력하지 마세요. 코드는 이 페이지에만 유지됩니다.

해답·해설 보기
JavaScript 해답
function solution(n) {
    return Math.ceil(n / 12);
}

solution(n)에 n(정수)를 전달하고 정수를 반환합니다. 아래 문제의 유효 입력 조건을 따릅니다. 표준 입력과 출력 코드는 작성하지 않습니다.

원자료와 확인 범위

2026-10-12에 제공된 학습 자료 섹션 1. 기본문제풀이.pdf의 3쪽 ‘연필 개수’와 문제 조건·예제를 대조했습니다. 같은 ZIP의 해당 문제 TXT는 풀이 코드 자료입니다. 이 자료의 최초 출제 원문·저자·공개 배포 주소까지 확인한 것은 아닙니다.

이번 대조는 원자료의 문제 조건과 예제 확인입니다. 이 글의 전체 코드를 새로 실행하거나 공식 채점에 제출한 결과를 뜻하지 않습니다. 아래 예제·자가 확인 항목은 직접 실행해 기대 출력과 비교하는 기준입니다.

이 문제의 핵심은 학생 수 N명을 12자루 단위로 나누어 올림하는 것입니다. 연필 1다스가 12자루이고 학생 1명에게 1자루씩 필요하므로, 필요한 다스 수는 N / 12의 올림값입니다.

JavaScript에서는 표준 입력으로 들어온 학생 수를 숫자로 바꾼 뒤 Math.ceil(n / 12)를 계산해 출력하면 됩니다. 입력은 자연수 하나이므로 배열 순회나 복잡한 조건 분기는 필요하지 않습니다.

알고리즘 설계

연필 개수 문제의 입력값이 계산 과정을 거쳐 정답으로 이어지는 흐름

알고리즘은 간단합니다. 표준 입력에서 학생 수 N을 읽고 숫자로 변환한 다음, 한 다스의 연필 수인 12로 나눕니다. 정확히 나누어떨어지면 그 몫이 답이고, 나머지가 있으면 한 다스가 더 필요합니다.

이 나머지 처리를 직접 조건문으로 작성할 수도 있지만, Math.ceil을 사용하면 더 짧고 명확합니다. 예를 들어 25명을 12로 나누면 2.083…이므로 올림해 3다스가 필요하고, 178명을 12로 나누면 14.833…이므로 15다스가 필요합니다.

JavaScript 코드에서 입력 처리와 결과 출력 위치를 보여주는 구성

아래 코드는 입력값 하나를 읽어 필요한 연필 다스 수를 출력합니다. fs.readFileSync(0, 'utf8')로 표준 입력을 읽고, Number로 학생 수를 숫자로 변환합니다.

변수 n은 학생 수입니다. 학생마다 연필 1자루가 필요하므로 총 필요한 연필 수 역시 n자루이고, 이를 12자루씩 묶은 다스 수로 바꾸기 위해 Math.ceil(n / 12)를 사용합니다.

Node.js에서 아래 입력·출력 포함 코드를 solution.cjs로 저장합니다. input.txt에는 25 한 줄을 쓰고 Bash·명령 프롬프트의 node solution.cjs < input.txt 또는 PowerShell의 cmd /c “node solution.cjs < input.txt”로 실행합니다. 기대 출력은 3입니다. 본문의 입력 178은 15이고, 24명과 25명을 비교하면 각각 2다스와 3다스가 되어 올림이 필요한 이유를 확인할 수 있습니다.

const fs = require('fs');

const n = Number(fs.readFileSync(0, 'utf8').trim());
const answer = Math.ceil(n / 12);

console.log(answer);

위 코드에서 Math.ceil은 나눗셈 결과를 올림합니다. 12명까지는 1다스, 13명부터 24명까지는 2다스처럼 나머지가 있는 순간 다스 수가 하나 더 필요하기 때문입니다.

console.log에는 최종 정답만 출력합니다. 예제 입력 25는 Math.ceil(25 / 12)가 3이므로 3을 출력하고, 예제 입력 178은 Math.ceil(178 / 12)가 15이므로 15를 출력합니다.

복잡도와 검증

입력은 학생 수 N 하나이고 계산도 나눗셈과 올림 한 번으로 끝납니다. 따라서 시간 복잡도는 O(1)입니다.

추가로 저장하는 값도 n과 answer 정도뿐이므로 공간 복잡도 역시 O(1)입니다. 입력 범위가 1000 이하이기 때문에 성능보다 계산식을 정확히 세우는 것이 중요합니다.

검증은 예제로 확인할 수 있습니다. 25명에게는 24자루인 2다스로 부족하므로 3다스가 필요하고, 178명에게는 168자루인 14다스로 부족하므로 15다스가 필요합니다. 12, 24처럼 12로 나누어떨어지는 값은 몫 그대로 출력됩니다.

정리하면, 연필 개수 문제는 학생 수를 12자루 단위로 묶어 올림하는 기본 산술 문제입니다. 입력을 숫자로 바꾸고 Math.ceil(n / 12)만 정확히 출력하면 됩니다.

이 문제를 푼 뒤 확인하기

인원이 한 다스의 배수인 경우와 한 자루 더 필요한 경우를 나눠 보세요.

본문의 예제와 이 반례를 직접 실행해 예상 출력과 비교하고, 결과가 다르면 입력 조건과 반복 범위를 다시 확인하세요.

글 소개·학습 준비·전체 목차
먼저 직접 풀어보세요

필요한 연필 다스 수는 학생 수를 12로 나눈 값을 올림하면 됩니다. 25명은 3다스, 178명은 15다스입니다. 12의 배수일 때와 한 자루가 더 필요할 때의 차이를 아래 풀이에서 확인하세요.

이 글이 도움이 되었나요?

조회 중

이어서 공부하기

체크포인트: 해설을 가리고 다시 풀고, 경계 입력을 하나 바꾸어 예상 결과와 실제 결과를 비교하세요. 직전 값과 지금까지의 최댓값을 구분하고, 초기값과 갱신 순서를 손으로 추적하세요.

다음 추천 · 문제: 1부터 N까지 합 출력하기 풀이

같은 주제의 문제에 적용하며 방금 배운 개념을 확인합니다.

권장 순서는 학습 가이드와 같습니다. 다른 순서는 접힌 참고 목록에서 확인할 수 있습니다. 읽음 표시는 숙달이나 채점 결과가 아닙니다.

원래 과정 목록 순서 (선택)

읽음 기록

읽음 — / 전체 58개 · 필수 58개

이 글을 쓴 해비

웹사이트를 제작·운영하고, 개인 서비스와 자동화·AI 도구를 만듭니다. 직접 만들며 배운 내용과 문제 해결 과정을 BlogFlow에 기록합니다.

새 글 받아보기

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

RSS 피드 구독하기

댓글 남기기