© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 1284 - 집 주소

2024-03-31
BOJ
브론즈 III
javascript
원본 문제 보기
수학
구현

문제

BOJ 1284 - 집 주소

집 번호가 주어질 때, 번호판의 가로 길이를 계산하라. 숫자마다 다른 너비를 가지며, 숫자 사이와 양 끝에 여백이 있다.

입력

여러 줄에 집 번호가 주어지며, 0이 입력되면 종료한다.

출력

각 번호판의 가로 길이를 출력한다.

예제

입력출력
10 011

풀이

숫자별 너비를 합산하고 테두리와 간격을 더한다.

  1. 1은 너비 2, 0은 너비 4, 나머지 숫자는 너비 3이다
  2. 각 숫자 앞에 간격 1을 더한다
  3. 왼쪽 테두리 1을 기본으로 시작한다
  4. 0이 입력될 때까지 반복한다

핵심 아이디어: 각 숫자의 고정 너비와 간격/테두리 규칙을 적용하면 단순 합산으로 해결된다.

코드

const solution = (input) => {
  const result = [];
  for (const line of input) {
    const n = line.trim();
    if (n === "0") break;
    let width = 1;
    for (const ch of n) {
      width += 1;
      if (ch === "1") width += 2;
      else if (ch === "0") width += 4;
      else width += 3;
    }
    result.push(width);
  }
  return result.join("\n");
};
 
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
console.log(solution(input));

복잡도

  • 시간: O(N × D) (D: 자릿수)
  • 공간: O(1)