상세 컨텐츠

본문 제목

2019-05-05-[백준]-1475번

Tech/Algorithm

by Hoyoo 2019. 6. 1. 20:11

본문


layout: post
title: "[백준] 1475번_방 번호"
date: 2019-05-05
desc: "백준 1475번"
keywords: "Algorithm"
categories: [Algorithm]
tags: [백준, 알고리즘, 1475번, 방번호, c++]
icon: icon-html


백준_1475번


방 번호


문제

다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)


입력

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.


출력

첫째 줄에 필요한 세트의 개수를 출력한다.


예제 입력 1

9999

예제 출력 1

2

출처

  • 문제를 번역한 사람: baekjoon
  • 데이터를 추가한 사람: doju
  • 빠진 조건을 찾은 사람: newdeal
  • 문제의 오타를 찾은 사람: waylight3

알고리즘 분류



풀이

  • 모든 9를 6으로 바꾼다. 그 후 6이 들어간 인덱스는 2배수당 1세트로 계산해준다. (1,2개는 1세트,,3,4개는 2세트…..)
  • 그 후 0~9까지의 인덱스 중의 최대값을 구한다.


소스코드

#include <iostream>
#include <string>

using namespace std;

int main()
{
  int n, arr[10]={0};

  cin >> n;

  if(n==0) {
      cout << 1 << "\n";
      return 0;
  }

  int temp = 0;
  while(n>0) {
      temp=n%10;
      n=n/10;
      if(temp==9) {
          temp=6;
      }
      arr[temp]++;
  }

  arr[6]=arr[6]/2 + arr[6]%2;

  int max = 0;
  for(int i=0; i<10; i++) {
      if(arr[i]>=max) {
          max=arr[i];
      }
  }

  cout << max << "\n";
  return 0;
}

'Tech > Algorithm' 카테고리의 다른 글

관련글 더보기

댓글 영역