문제
문제
재석이는 대문에 붙이는 (주소를 나타내는) 호수판 제작업체의 직원이다. 고객에게 전달할 호수판은 숫자와 숫자 사이 그리고 왼쪽 오른쪽으로 적당히 여백이 들어가 줘야하고 숫자마다 차지하는 간격이 조금씩 상이하다. 다행이도 규칙은 매우 간단하다.
- 각 숫자 사이에는 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은 처리하지 않는다.
출력
각 입력마다 얼마만큼 너비를 차지하는지 정수로 출력하면 된다.
각 출력은 줄바꿈으로 구분되어야한다.
예제 입력 1 복사
120
5611
100
0
예제 출력 1 복사
13
15
14
출처
ICPC > Regionals > South Pacific > South Pacific Region > New Zealand Programming Contest > NZPC 2006 C번
- 문제를 번역한 사람: wooljs
#include<stdio.h>
int plus(int num);
int main(void) {
int n, check, cm;
while(scanf("%d", &n) && n != 0){
cm = 1;
while(n != 0){
check = n%10;
cm += plus(check);
n/=10;
}
printf("%d\n", cm);
}
}
int plus(int num){
if (num == 0)
return 5;
else if(num == 1)
return 3;
else
return 4;
}
1부터 9999 사이의 값을 입력 받아서 호수판의 길이를 구합니다.
숫자와 숫자 사이, 양 끝에는 1cm의 여분을 가지고 있다고 하니 기존 값을 1로 설정하고 이후의 숫자가 추가될 때 정해진 길이보다 1cm 더 크게 값을 추가해 줍니다.
n의 값이 0이 아닌 이상 계속 반복해서 길이를 구합니다.
입력 받은 값을 10으로 나눈 나머지 값의 숫자 길이를 구하면 됩니다.
0은 4cm이므로 5
1은 2cm이므로 3
나머지는 3cm 로 4를 계산합니다.
Git Hub
BaekJoon-Study/1284.c at C · GUuu9/BaekJoon-Study (github.com)
'백준 코드 공부 > C언어' 카테고리의 다른 글
백준 1475 : 방 번호 (C언어) (0) | 2022.01.12 |
---|---|
백준 10707 : 수도요금 (C언어) (0) | 2022.01.03 |
백준 1032 : 명령 프롬프트 (C언어) (0) | 2022.01.02 |
백준 5532 : 방학숙제 (C언어) (0) | 2022.01.02 |
백준 1668 : 트로피 진열 (C언어) (0) | 2021.12.14 |