본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 7581 : Cuboids

반응형

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

 

7581번: Cuboids

Input is a series of lines, each containing 4 integers, l, w, h and v representing the length, width height and volume of a cuboid in that order. The integers are separated by a single space. 0 < l, w, h <100, 0 < v < 100,000. In each row, one of the value

www.acmicpc.net

구현문제였습니다.

📕 풀이방법

📔 입력 및 초기화

 while loop를 수행합니다. 1. 0인 index를 저장할 zeroIdx, 0인 부분의 답을 구할 변수 val, 4수를 입력할 vector변수 len을 선언 후 len에 정보를 입력해줍니다. 2. len의 원소가 모두 0이면 while loop break해줍니다.

📔 풀이과정

 1. 입력시 값이 0이면 해당 index를 zeroIdx에 저장합니다.

 2. len[0] ~ len[2]까지 0이 아닌 값에 대해 val과 누적곱을 해줍니다.

 3. 직육면체의 부피가 0이 아니라면 가로, 세로 또는 높이 중 하나의 값이 0이라는 의미이므로 부피 / 누적곱을 val값에 저장합니다. 그렇지 않다면 그대로 부피가 val이 되므로 다른 조치를 할 필요가 없습니다.

📔 정답출력

 for loop를 수행하며

 1. zeroIdx가 아니라면 len의 값을 출력합니다.

 2. 맞다면 val값을 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int main(){
    while(1){
        int zeroIdx, val = 1;
        vector <int> len(4);

        for(int i = 0; i < 4; i++) {
            cin >> len[i];
            if(!len[i]) zeroIdx = i;
        }

        if(!len[0] && !len[1] && !len[2] && !len[3]) break;

        for(int i = 0; i < 3; i++) if(len[i]) val *= len[i];

        if(len[3]) val = len[3] / val; 

        for(int i = 0; i < 4; i++) {
            if(i == zeroIdx) cout << val << ' ';
            else cout << len[i] << ' ';
        }
        cout << '\n';
    }
}