πŸ“¦ Chango/🏫 First Solve at School

[BOJ B3][C++] λ°±μ€€ 10419번: 지각

선달 2023. 1. 2. 16:19
λ°˜μ‘ν˜•

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

 

10419번: 지각

μ°½μ˜μ΄κ°€ κΆκΈˆν•œ 경우의 수 T(1 ≤ T ≤ 100)κ°€ 첫 번째 쀄에 주어지고, μ΄μ–΄μ„œ T 개의 쀄에 μˆ˜μ—…μ‹œκ°„ d(1 ≤ d ≤ 10,000, dλŠ” μ •μˆ˜)κ°€ μ°¨λ‘€λŒ€λ‘œ 주어진닀.

www.acmicpc.net

 

문제

μ°½μ˜μ΄λŠ” μ΄λ²ˆν•™κΈ°μ— μ–΄λ–€ κ΅μ–‘μˆ˜μ—…μ„ λ“£κ³  μžˆλ‹€. 그런데, κ·Έ κ΅μˆ˜λ‹˜μ€ 맀우 지각을 자주 ν•˜μ‹œκ³  κ²Œλ‹€κ°€ μˆ˜μ—…μ— 지각을 ν•˜μ˜€μ„ 경우 μˆ˜μ—…μ„ 일찍 마쳐 μ£ΌκΈ°κΉŒμ§€ ν•˜λŠ” 것을 λ°œκ²¬ν•˜μ˜€λ‹€.

μ°½μ˜μ΄λŠ” κ΅μˆ˜λ‹˜μ˜ μ§€κ°μ‹œκ°„ 0μ΄μƒμ˜ μ •μˆ˜ t와 μˆ˜μ—…μ„ 일찍 λ§ˆμ³μ£ΌλŠ” μ‹œκ°„ s 사이에 λ‹€μŒκ³Ό 같은 관계가 μžˆμŒμ„ μ•Œμ•˜λ‹€.

s = t2

문득 μ°½μ˜μ΄λŠ” μˆ˜μ—…μ‹œκ°„ dκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, κ΅μˆ˜λ‹˜μ΄ μ–Όλ§ˆλ‚˜ 지각을 ν•  수 μžˆλŠ”μ§€ κΆκΈˆν•΄μ‘Œκ³ , μ—¬λŸ¬λΆ„μ€ 창영이λ₯Ό λ„μ™€μ„œ κ΅μˆ˜λ‹˜μ΄ 지각할 수 μžˆλŠ” μ΅œλŒ€μ˜ μ‹œκ°„μ„ μ•Œμ•„λ³΄μž. λ¬Όλ‘ , κ΅μˆ˜λ‹˜μ΄ λ„μ°©ν•˜μžλ§ˆμž μˆ˜μ—…μ„ 일찍 λ§ˆμ³μ„œ μˆ˜μ—…μ΄ λλ‚˜λŠ” 것도 κ°€λŠ₯ν•˜λ‹€. 예λ₯Ό λ“€μ–΄, μˆ˜μ—…μ‹œκ°„μ΄ 6뢄인 경우, κ΅μˆ˜λ‹˜μ΄ 2λΆ„ 지각을 ν•˜λ©΄, 4λΆ„κ°„ μˆ˜μ—…μ„ 일찍 마치게 되고, 2+4=6이기 λ•Œλ¬Έμ— λ°”λ‘œ μˆ˜μ—…μ„ 끝낼 수 μžˆλ‹€. 또 λ‹€λ₯Έ 예둜, μˆ˜μ—…μ‹œκ°„μ΄ 7뢄인 경우 κ΅μˆ˜λ‹˜μ΄ 2λΆ„ 지각을 ν•˜λ©΄, μˆ˜μ—…μ„ 4λΆ„ 일찍 λ§ˆμ³μ€„ 수 있고, 2+4≤7 μ΄λ―€λ‘œ κ°€λŠ₯ν•œ κ²½μš°κ°€ 되고, κ΅μˆ˜λ‹˜μ΄ 3λΆ„ 지각을 ν•˜κ²Œ 되면, μˆ˜μ—…μ„ 9λΆ„ 일찍 λ§ˆμ³μ•Ό 되고, 3+9>7 μ΄λ―€λ‘œ, κ΅μˆ˜λ‹˜μ΄ 3λΆ„ 지각을 ν•˜λŠ” 것은 λΆˆκ°€λŠ₯ν•˜λ‹€. λ”°λΌμ„œ, κ΅μˆ˜λ‹˜μ€ μˆ˜μ—…μ‹œκ°„μ΄ 7뢄인 경우 κ΅μˆ˜λ‹˜μ€ μ΅œλŒ€ 2λΆ„κ°„ 지각을 ν•  수 μžˆλ‹€.

μž…λ ₯

μ°½μ˜μ΄κ°€ κΆκΈˆν•œ 경우의 수 T(1 ≤ T ≤ 100)κ°€ 첫 번째 쀄에 주어지고, μ΄μ–΄μ„œ T 개의 쀄에 μˆ˜μ—…μ‹œκ°„ d(1 ≤ d ≤ 10,000, dλŠ” μ •μˆ˜)κ°€ μ°¨λ‘€λŒ€λ‘œ 주어진닀.

좜λ ₯

μˆ˜μ—…μ‹œκ°„μ— λ”°λ₯Έ κ΅μˆ˜λ‹˜μ΄ 지각할 수 μžˆλŠ” μ΅œλŒ€ μ‹œκ°„ tλ₯Ό μ •μˆ˜λ‘œ κ΅¬ν•΄μ„œ 좜λ ₯ν•œλ‹€.

 

풀이

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    
    int t;
    cin >> t;
    while(t--) {
        int d, ans=0;
        cin >> d;
        for(int j=0; true; j++) {
            if(d < pow(j, 2)+j){
                ans = j-1;
                break;
            }
        }
        cout << ans << "\n";
    }
    
    return 0;
}

/*
 */
λ°˜μ‘ν˜•