Plite
전자오락 공방
Plite
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 프로젝트 (18)
      • 완성 프로젝트 (3)
      • 프로젝트 진행 내역 (15)
    • 공부 및 정리 (241)
      • 백준 코드 (222)
      • C++ (8)
      • DirectX (2)
      • Unreal Engine (6)
      • 프로그래밍 패턴 (3)
    • 기타 (12)
      • 기타 주저리 (10)
    • 게임과 취미 (1)
    • 대문 (1)

블로그 메뉴

  • 홈
  • 프로젝트
  • 취미, 일상
  • 백준 프로필

공지사항

  • [Read Me]
  • 제 블로그에 방문하신 것을 환영합니다.

인기 글

태그

  • 분할정복
  • 백트래킹
  • 큐
  • 위상 정렬
  • 트리
  • 구현
  • LCA
  • SCC
  • 최소 스패닝 트리
  • 트라이
  • 동적계획법
  • 브루트포스
  • 투포인터
  • 백준
  • C++
  • 기하
  • 세그먼트 트리
  • 이분탐색
  • 조합론
  • 유니온 파인드
  • 수학
  • 문자열
  • 정렬
  • 스택
  • KMP
  • UC++
  • 누적합
  • 우선순위큐
  • 정수론
  • 그래프

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Plite

전자오락 공방

[C++]백준 - 1284번 문제
공부 및 정리/백준 코드

[C++]백준 - 1284번 문제

2021. 11. 22. 18:22

1284번: 집 주소 (acmicpc.net)

 

1284번: 집 주소

재석이는 대문에 붙이는 (주소를 나타내는) 호수판 제작업체의 직원이다. 고객에게 전달할 호수판은 숫자와 숫자 사이 그리고 왼쪽 오른쪽으로 적당히 여백이 들어가 줘야하고 숫자마다 차지하

www.acmicpc.net

 

1284번 : 집 주소


재석이는 대문에 붙이는 (주소를 나타내는) 호수판 제작업체의 직원이다. 고객에게 전달할 호수판은 숫자와 숫자 사이 그리고 왼쪽 오른쪽으로 적당히 여백이 들어가 줘야하고 숫자마다 차지하는 간격이 조금씩 상이하다. 다행이도 규칙은 매우 간단하다.

  1. 각 숫자 사이에는 1cm의 여백이 들어가야한다.
  2. 1은 2cm의 너비를 차지해야한다. 0은 4cm의 너비를 차지해야한다. 나머지 숫자는 모두 3cm의 너비를 차지한다.
  3. 호수판의 경계와 숫자 사이에는 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은 처리하지 않는다.

 

 

출력


각 입력마다 얼마만큼 너비를 차지하는지 정수로 출력하면 된다.

각 출력은 줄바꿈으로 구분되어야한다.

 

 

 


 

생각해 볼 점


입력은 char[]로 받는 편이 편합니다.

 

저는 int로 받아서 한자리 씩 숫자를 보고 계산합니다.

 

우선, 가장 왼쪽의 여백 1칸은 미리 더합니다. 그 이후,

 

숫자가 0이면 +5

 

숫자가 1이면 + 3

 

그 외 숫자면 + 4를 해줍니다.

 

이렇게 네자리 수를 모두 계산하여 더하여 제출합니다.

 

 

코드


#include <iostream>
using namespace std;

int main() 
{
    int input;
    scanf("%d", &input);
    
    while(input)
    {
        int length = 1;
        while(input)
        {
            int number = input % 10;
            switch(number)
            {
                case 0:
                    length += 5;
                    break;
                case 1:
                    length += 3;
                    break;
                default:
                    length += 4;
                    break;
            }
            input /= 10;
        }
        
        printf("%d\n", length);
        scanf("%d", &input);
    }
	return 0;
}

 

그 외


 

저작자표시

'공부 및 정리 > 백준 코드' 카테고리의 다른 글

[C++]백준 - 9333번 문제  (0) 2021.11.23
[C++]백준 - 14725번 문제  (0) 2021.11.22
[C++]백준 - 1212번 문제  (0) 2021.11.20
[C++]백준 - 1305번 문제  (0) 2021.11.20
[C++]백준 - 6503번 문제  (0) 2021.11.18
    '공부 및 정리/백준 코드' 카테고리의 다른 글
    • [C++]백준 - 9333번 문제
    • [C++]백준 - 14725번 문제
    • [C++]백준 - 1212번 문제
    • [C++]백준 - 1305번 문제
    Plite
    Plite
    개발 일지, 게임 이야기 등을 적어두는 공간입니다.

    티스토리툴바