백준 1011 : Fly me to the Alpha Centauri

#include <stdio.h>

int solve() {
   int x, y, res, cnt = 2;
   scanf("%d %d", &x, &y);

   int distance = y - x;

   if(distance <= 3)
      printf("%d\n", distance);
   else {
      distance -= 2;
      res = 2;

      while(distance != 0) {
         if(distance / cnt >= 2) {
            distance -= 2 * cnt;
            res += 2;
            cnt++;
         }else{
            if(distance < cnt) {
               res++;
               distance = 0;
            }else if(distance >= cnt) {
               if(distance % cnt == 0)
                  res++;
               else
                  res += 2;
               distance -= cnt + distance % cnt; 
            }
         }
      }
      printf("%d\n", res);
   }
}
 
int main() {
   int test;
   scanf("%d", &test);
   
   for(int i=0;i<test;i++)
      solve();
      
   return 0; 
}

 

드디어~~~~~~~~~~~~~ 며칠을 문제 분석하면서 끄적였는지 ㅠ 힘들었다

문제를 풀면서 들었던 생각은 숫자가 나오는 순서 자체는 별 상관이 없다는것. 배치만 제대로 하면 되는것이므로