본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 6436 : Floppies

반응형

https://www.acmicpc.net/problem/6436

 

6436번: Floppies

In this age of Internet, on-line connections, instantaneous email, etc., there are still some people who need to work with floppy disks. John is one of those. Every evening he goes home and continues what he has been doing in his office on his private UNIX

www.acmicpc.net

구현문제였습니다.

📕 풀이방법

📔 입력 및 초기화

SHAR file의 크기 sz, test case번호 cnt를 선언 후 while loop를 수행하며 sz가 0일 때까지 입력해줍니다. 매 loop마다 cnt는 1씩 증가하게 됩니다.

📔 풀이과정

 1. 먼저 주어진 file을 절반으로 압축해야합니다. 짝수가 아닌 경우에는 짝수를 맞춰주기 위해 절반으로 나눈뒤 1을 더해줍니다.

 2. 압축된 file들은 모두 "uuencode"되므로 해당크기의 1.5배가 됩니다. 압축된 file은 짝수 크기를 가지므로, 이를 절반으로 나눈 값을 더해주면 됩니다.

 3. 필요한 플로피 디스크는 플로피의 크기인 186000으로 나눠주면 구할 수 있습니다. 나머지가 남을 수 있으므로 sz+1860000 - 1 값에서 나눠주면 됩니다.

📔 정답출력

조건에 맞게 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
#define FILE_SIZE 1860000
using namespace std;
int sz, cnt;
int main(){
    while(1){
        cnt++;
        cin >> sz;
        if(!sz) break;
        if(sz % 2) sz = sz/2 + 1;
        else sz/=2;
        sz += sz/2;
        printf("File #%d\n", cnt);
        printf("John needs %d floppies.\n", (sz + FILE_SIZE - 1) / FILE_SIZE);
        cout << '\n';
    }
}