본문 바로가기

Algorithm/Brute Force

(C++) - 백준(BOJ) 3276 : ICONS

반응형

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

 

3276번: ICONS

The first and only line of input file contains a natural number N (1 ≤ N ≤ 100), the number of pebbles to be arranged. Arrangement needs not to be regular in any sense – some places in a row may be empty.

www.acmicpc.net

brute force로 푼 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

배치해야할 조약돌의 개수 pebbles, 최소 행과 열의 합을 저장할 minSum, 그 때 행 minRow, 그 때 열 minCol을 선언 후 조약돌의 개수를 입력해줍니다.

📔 풀이과정

 1. i=1 ~ pebbles까지 loop를 돕니다.   1-1. i * j = pebbles의 공식이 성립하므로 만약 i로 딱 나누어 떨어진다면 j = pebbles/i, 아니라면 j = pebbles/i + 1가 되며 지역변수 j를 선언해 해당 조건에 따라 저장해줍니다.   1-2. i + j < minSum이라면 minSum에 i + j를 저장하며 각 행과 열을 minRow, minCol에 저장해줍니다.

📔 정답출력

 구해놓은 minRow, minCol을 ' '로 구분지어 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
#define MAX 0x3f3f3f3f
using namespace std;
int pebbles, minCol = MAX, minRow = MAX, minSum = MAX;
int main(){
    cin >> pebbles;
    for(int i = 1; i <= pebbles; i++) {
        int j = pebbles % i == 0 ? pebbles / i : pebbles / i + 1;
        if(i + j < minSum) {
            minSum = i + j;
            minRow = i;
            minCol = j;
        }
    }
    cout << minRow << ' ' << minCol;
}

📕 Test Case

input

1

답 1 1