코딩로그
[백준/BOJ/C++] 1284번 집 주소 본문
[문제]
재석이는 대문에 붙이는 (주소를 나타내는) 호수판 제작업체의 직원이다. 고객에게 전달할 호수판은 숫자와 숫자 사이 그리고 왼쪽 오른쪽으로 적당히 여백이 들어가 줘야하고 숫자마다 차지하는 간격이 조금씩 상이하다. 다행이도 규칙은 매우 간단하다.
- 각 숫자 사이에는 1cm의 여백이 들어가야한다.
- 1은 2cm의 너비를 차지해야한다. 0은 4cm의 너비를 차지해야한다. 나머지 숫자는 모두 3cm의 너비를 차지한다.
- 호수판의 경계와 숫자 사이에는 1cm의 여백이 들어가야한다.
예를 들어 위의 120 같은 경우, 각 숫자 사이에 여백이 1cm 씩 2개 들어간다. 1은 2cm, 2는 3cm, 0은 4cm를 차지한다. 오른쪽, 왼쪽 경계에서 각각 여백이 1cm씩 차지한다. 따라서 총 2 + 2 + 3 + 4 + 1 + 1 = 13(cm) 가 된다.
재석이는 고객에게 전달해야할 호수판의 너비가 얼마나 되는지 궁금해졌다. 재석이를 도와주자!
[입력]
호수판에 들어갈 숫자 N의 범위는 1 ≤ N ≤ 9999 이다.
입력은 마지막에 0이 들어오기 전까지 계속해서 줄 단위로 주어진다.
또한, 마지막의 0은 처리하지 않는다.
[출력]
각 입력마다 얼마만큼 너비를 차지하는지 정수로 출력하면 된다.
각 출력은 줄바꿈으로 구분되어야한다.
[Source Code]
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> vector;
while(true){
int sum = 2, input, count = -1;
cin >> input;
if(input == 0) break;
while(input > 0){
int one = input % 10;
count++;
if(one == 1) sum += 2;
else if(one == 0) sum += 4;
else sum+= 3;
input /= 10;
}
sum += count;
vector.push_back(sum);
}
for(int i = 0; i < vector.size(); i++){
cout << vector[i] << "\n";
}
}
[결과 화면]
'YJ > C++' 카테고리의 다른 글
[백준/BOJ/C++] 2438번 별 찍기 - 1 (0) | 2021.10.15 |
---|---|
[백준/BOJ/C++] 4504번 배수 찾기 (0) | 2021.10.15 |
[백준/BOJ/C++] 2997번 네 번째 수 (0) | 2021.10.15 |
[백준/BOJ/C++] 15873번 공백 없는 A+B (0) | 2021.10.15 |
[백준/BOJ/C++] 5361번 전투 드로이드 가격 (0) | 2021.10.14 |