문제 개요
연도를 나타내는 숫자 하나를 입력받아, 해당 연도가 몇 번째 세기에 속하는지 계산하는 JavaScript 함수를 작성해야 합니다.
예를 들어 다음과 같습니다.
- 1864년 → 19세기
- 2021년 → 21세기
핵심 규칙은 간단합니다. 1~100년은 1세기, 101~200년은 2세기처럼 100년 단위로 세기가 하나씩 늘어나며, 1900년처럼 100으로 정확히 나누어떨어지는 해는 그대로 그 세기(19세기)에 포함됩니다.
구현 코드
const year = 1956;
const findCentury = (year) => {
let century = 0;
for(let i = 0; i < year; i++){
if(i % 100 === 0){
century++;
}
}
return century;
};
console.log(findCentury(year));
코드 설명
이 코드의 동작 원리는 다음과 같습니다.
century변수를 0으로 초기화하여 세기 수를 셉니다.- 0부터 입력받은 연도 직전까지 반복하면서, 인덱스가 100으로 나누어떨어질 때마다(즉, 새로운 100년 구간이 시작될 때마다)
century를 1씩 증가시킵니다. - 반복이 끝나면 최종적으로 누적된 값이 해당 연도가 속한 세기가 됩니다.
예를 들어 1956년의 경우, 0, 100, 200, ..., 1900까지 총 20번 새로운 백 년 구간이 시작되므로 결과는 20세기가 됩니다.
출력 결과
20
더 효율적인 대안: Math.ceil() 활용
위 방법은 연도 크기만큼 반복문을 돌기 때문에 큰 숫자에서는 비효율적입니다. 반복문 없이 올림 연산만으로 한 줄에 해결할 수 있습니다.
const findCentury = (year) => Math.ceil(year / 100);
console.log(findCentury(1956)); // 20
console.log(findCentury(2021)); // 21
console.log(findCentury(1900)); // 19
year / 100을 올림 처리하면 1956 ÷ 100 = 19.56 → 20이 되어 정확히 20세기를 반환합니다. 1900년처럼 딱 나누어떨어지는 경우에도 19.0 → 19로 올바르게 계산되므로, 성능과 가독성 면에서 이 방식이 가장 권장됩니다.