[λ°±μ€/C++] 1011λ² : Fly me to the Alpha Centauri
λ¬Έμ
μ°νμ΄λ μ΄λ¦° μμ , μ§κ΅¬ μΈμ λ€λ₯Έ νμ±μμλ μΈλ₯λ€μ΄ μ΄μκ° μ μλ λ―Έλκ° μ€λ¦¬λΌ λ―Ώμλ€. κ·Έλ¦¬κ³ κ·Έκ° μ§κ΅¬λΌλ μΈμμ λ°μ λ΄λ € λμ μ§ 23λ μ΄ μ§λ μ§κΈ, μΈκ³ μ΅μ°μ ASNA μ°μ£Ό λΉνμ¬κ° λμ΄ μλ‘μ΄ μΈκ³μ λ°μ λ΄λ € λλ μκ΄μ μκ°μ κΈ°λ€λ¦¬κ³ μλ€.
κ·Έκ° νμΉνκ² λ μ°μ£Όμ μ Alpha CentauriλΌλ μλ‘μ΄ μΈλ₯μ 보κΈμ리λ₯Ό κ°μ²νκΈ° μν λκ·λͺ¨ μν μ μ§ μμ€ν μ νμ¬νκ³ μκΈ° λλ¬Έμ, κ·Έ ν¬κΈ°μ μ§λμ΄ μμ²λ μ΄μ λ‘ μ΅μ κΈ°μ λ ₯μ μ΄ λμνμ¬ κ°λ°ν 곡κ°μ΄λ μ₯μΉλ₯Ό νμ¬νμλ€. νμ§λ§ μ΄ κ³΅κ°μ΄λ μ₯μΉλ μ΄λ 거리λ₯Ό κΈκ²©νκ² λ릴 κ²½μ° κΈ°κ³μ μ¬κ°ν κ²°ν¨μ΄ λ°μνλ λ¨μ μ΄ μμ΄μ, μ΄μ μλμκΈ°μ kκ΄λ μ μ΄λνμμ λλ k-1 , k νΉμ k+1 κ΄λ λ§μ λ€μ μ΄λν μ μλ€. μλ₯Ό λ€μ΄, μ΄ μ₯μΉλ₯Ό μ²μ μλμν¬ κ²½μ° -1 , 0 , 1 κ΄λ μ μ΄λ‘ μ μ΄λν μ μμΌλ μ¬μ€μ μμ νΉμ 0 거리λ§νΌμ μ΄λμ μλ―Έκ° μμΌλ―λ‘ 1 κ΄λ μ μ΄λν μ μμΌλ©°, κ·Έ λ€μμλ 0 , 1 , 2 κ΄λ μ μ΄λν μ μλ κ²μ΄λ€. ( μ¬κΈ°μ λ€μ 2κ΄λ μ μ΄λνλ€λ©΄ λ€μ μκΈ°μ 1, 2, 3 κ΄λ μ μ΄λν μ μλ€. )
κΉμ°νμ 곡κ°μ΄λ μ₯μΉ μλμμ μλμ§ μλͺ¨κ° ν¬λ€λ μ μ μ μκ³ μκΈ° λλ¬Έμ xμ§μ μμ yμ§μ μ ν₯ν΄ μ΅μνμ μλ νμλ‘ μ΄λνλ € νλ€. νμ§λ§ yμ§μ μ λμ°©ν΄μλ κ³΅κ° μ΄λμ₯μΉμ μμ μ±μ μνμ¬ yμ§μ μ λμ°©νκΈ° λ°λ‘ μ§μ μ μ΄λ거리λ λ°λμ 1κ΄λ μΌλ‘ νλ € νλ€.
κΉμ°νμ μν΄ xμ§μ λΆν° μ νν yμ§μ μΌλ‘ μ΄λνλλ° νμν κ³΅κ° μ΄λ μ₯μΉ μλ νμμ μ΅μκ°μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νλΌ.
μ λ ₯
μ λ ₯μ 첫 μ€μλ ν μ€νΈμΌμ΄μ€μ κ°μ Tκ° μ£Όμ΄μ§λ€. κ°κ°μ ν μ€νΈ μΌμ΄μ€μ λν΄ νμ¬ μμΉ x μ λͺ©ν μμΉ y κ° μ μλ‘ μ£Όμ΄μ§λ©°, xλ νμ yλ³΄λ€ μμ κ°μ κ°λλ€. (0 ≤ x < y < 2^31)
μΆλ ₯
κ° ν μ€νΈ μΌμ΄μ€μ λν΄ xμ§μ μΌλ‘λΆν° yμ§μ κΉμ§ μ νν λλ¬νλλ° νμν μ΅μνμ 곡κ°μ΄λ μ₯μΉ μλ νμλ₯Ό μΆλ ₯νλ€.
νμ΄
μ΄ λ¬Έμ λ κ·μΉμ μ ννκ² μ°ΎμμΌ ν΄μ μ‘°κΈ μ΄λ €μ λ€. μ΄ 2κ°μ§μ κ·μΉμ΄ μλλ° μ²« λ²μ§Έ κ·μΉκΉμ§λ§ μμλ΄μ λ€λ₯Έ λΈλ‘κ·Έλ₯Ό μ°Έκ³ νμ¬ μ½λλ₯Ό μ§°λ€.
01. μ²μκ³Ό λ§μ§λ§μλ 무쑰건 1κ΄λ μ μ΄λν΄μΌ νλ€.
λ¬Έμ μ ν΅μ¬μ "λ§μ§λ§μ 1κ΄λ μ μ΄λν΄μΌ νλ€"λ κ²μ΄λ€.
λλ¬Έμ μ΄λν κ²½μ° 1 -> 2 -> .... -> 2 -> 1 μμλ‘ μ΄λν΄μΌ νλ€.
1 > 2 > 1 = 1+2+1 = 4 -> 2*2 (μ΄λνμ 3)
1 > 2 > 3 > 2 > 1 = 1+2+3+2+1 = 9 -> 3*3 (μ΄λνμ 5)
1 > 2 > 3 > 4 > 3 > 2 > 1 = 1+2+3+4+3+2+1 = 16 = 4*4 (μ΄λνμ 7)
=> μ΅λ μ΄λ μλ = N^2, μ΄λ νμ = 2N-1μμ νμΈν μ μλ€.
02. μ°¨μ μ΄λμ νμ κ³μ°
μμ κ³μ°μΌλ‘ λ μ§μ κ°μ κ±°λ¦¬κ° μ κ³±μμΌλμ μ΅μ μ΄λ νμλ₯Ό ꡬνλ€. λ€λ₯Έ κ²½μ°μλ μ΄λ¨κΉ?
https://jaynamm.tistory.com/entry/%EB%B0%B1%EC%A4%80-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-1011%EB%B2%88-Fly-me-to-the-Alpha-Centauri λμ΄ μ¬λ¦° νμ μ μ 리λμ΄ μλ€.
κ° κ±°λ¦¬μ μ κ³±κ·Όκ³Ό μ κ³±κ·Όμ λ°μ¬λ¦Ό κ°μ 보면
μ κ³±κ·Ό <= λ°μ¬λ¦Όκ°μΌ κ²½μ°, 2*λ°μ¬λ¦Ό - 1
μ κ³±κ·Ό > λ°μ¬λ¦Όκ°μΌ κ²½μ° 2*λ°μ¬λ¦Ό
μ½λλ λ€μκ³Ό κ°λ€. μ°Έκ³ λ‘ μ λ ₯κ°μ λ²μκ° 2^31μ΄λ―λ‘ x, yμ μλ£νμ long longμ μ¬μ©ν΄μΌ νλ€.
#include <iostream>
#include <cmath>
using namespace std;
int main(){
cin.tie(0);
int t;
cin >> t;
long long x, y;
for(int i=0; i<t; i++){
cin >> x >> y;
double distance = y-x; // λ μ§μ μ¬μ΄μ 거리
double dpow = sqrt(distance); // 거리μ μ κ³±κ·Ό
int pow = round(sqrt(distance)); // 거리μ μ κ³±κ·Όμ λ°μ¬λ¦Ό
if(dpow <= pow) cout << pow * 2 - 1 << "\n";
else cout << pow * 2 << "\n";
}
return 0;
}
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int main() {
int num;
scanf("%d",&num);
for(int i = 0; i < num; i++)
{
long long x,y;
long long move,max = 0;
cin >>x>>y;
while(max*max <= y-x)
max++;
max--;
move = 2*max -1;
long long rem = y-x - max*max;
rem = (long long)ceil((double)rem / (double)max);
move += rem;
printf("%lld\n",move);
}
}
https://cryptosalamander.tistory.com/25
[λ°±μ€ / BOJ] - 1011λ² Fly me to the Alpha Centauri C++ νμ΄
λ°±μ€ - λ¨κ³λ³λ‘ νμ΄λ³΄κΈ° [1011] https://www.acmicpc.net/problem/1011 λ¬Έμ μ²μ μ΄λ ν λ -1, 0 , 1 μ μ΄λν μ μλ μ°μ£Όμ μ, νμ kκ΄λ μ΄λμλ§λ€ k-1, k, k+1 κ΄λ λ§νΌλ§ λ€μ μ΄λν μ μλ€. x..
cryptosalamander.tistory.com
[λ°±μ€ μκ³ λ¦¬μ¦] 1011λ² : Fly me to the Alpha Centauri
λ¬Έμ 1011λ² : Fly me to the Alpha Centauri 1011λ²: Fly me to the Alpha Centauri μ°νμ΄λ μ΄λ¦° μμ , μ§κ΅¬ μΈμ λ€λ₯Έ νμ±μμλ μΈλ₯λ€μ΄ μ΄μκ° μ μλ λ―Έλκ° μ€λ¦¬λΌ λ―Ώμλ€. κ·Έλ¦¬κ³ κ·Έκ° μ§κ΅¬λΌ..
jaynamm.tistory.com
λ λΆμ νμ΄μ μ½λλ₯Ό μ°Έκ³ νμ¬ μ 리νμλ€.