• toc {:toc}

๋ฌธ์ œ ํ™•์ธํ•˜๊ธฐ

ํ’€์ด

์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ์™€ ๋๋‚  ๋•Œ 1๋กœ ์‹œ์ž‘ํ•˜๊ณ  1๋กœ ๋๋‚˜์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ์˜ˆ์™ธ์‚ฌํ•ญ์œผ๋กœ ์ƒ๊ฐํ•ด๋‘๊ณ  ํ’€์ดํ•œ๋‹ค.

์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ด n-1, n, n+1๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋А ์ •๋„ ๋Œ€์นญ์ ์œผ๋กœ ๊ณ„์‚ฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด x, y๊ฐ€ ๊ฐ๊ฐ 0, 5๋ผ๊ณ  ํ•˜๋ฉด 5๋ฅผ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค. ์‹œ์ž‘, ๋„์ฐฉ 1๊ด‘๋…„ 2๋ฒˆ ์ƒ๊ฐํ•˜๋ฉด 3์ด ๋‚จ๊ณ , ๋‚ด๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋™ ๋ฐฉ์‹์ด 1๊ด‘๋…„ ์ด๋™ ํ˜น์€ 2๊ด‘๋…„ ์ด๋™์ด๋‹ค. 2๊ด‘๋…„ 2๋ฒˆ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— 2, 1์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์ฆ‰, n๊ด‘๋…„x2 ๋ณด๋‹ค ๋‚จ์€ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ธธ๋‹ค๋ฉด ๋Œ€์นญ์ ์œผ๋กœ ๊ณ„์‚ฐํ•ด์ฃผ๋ฉด ๋˜๊ณ , n๊ด‘๋…„x2 ๋ณด๋‹ค ๋‚จ์€ ๊ฑฐ๋ฆฌ๊ฐ€ ์งง๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด n๊ด‘๋…„์„ 1๋ฒˆ๋งŒ ์ ์šฉํ•ด์ค€๋‹ค. ๊ฐ™์„ ๊ฒฝ์šฐ์—๋Š” n+1๊ด‘๋…„ 1๋ฒˆ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ(n=1 ๋‚จ์€ ๊ฑฐ๋ฆฌ=2)์™€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(n=3, ๋‚จ์€ ๊ฑฐ๋ฆฌ=6)๊ฐ€ ์žˆ์–ด ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

์ฒ˜์Œ์— ์ƒ๊ฐํ•ด๋‘์—ˆ๋˜ ์˜ˆ์™ธ์‚ฌํ•ญ๊นŒ์ง€ ์‹œ์ž‘ ๋‹จ๊ณ„์— ์ ์šฉํ•ด์ค€๋‹ค.

#include <bits/stdc++.h>
using namespace std;
 
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
 
	int T, x, y; 
	long long num, res = 0;
 
	cin >> T;
 
	for(int i = 0; i < T; i++){
		num = 1;
		res = 0;
		cin >> x >> y;
		long long diff = y - x;
		if(diff == 2){
			cout << 2 << '\n';
			continue;
		}
		while(true){
			if(num * 2 < diff){
				diff = diff - num * 2;
				res += 2;
				num++;
			}
			else if(num * 2 == diff){
				if (num+1 < diff) res += 2;
				else res++;
				break;
			}
			else {
				diff = diff - num;
				res++;
			}
			if(diff <= 0) break;
		}
		cout << res << '\n';
	}
 
	return 0;
}

ํ’€์ด๋ฅผ ๋ฐ˜๋ก€๋ฅผ ์ฐพ์•„๊ฐ€๋ฉฐ ๋ผ์›Œ๋งž์ถ”๊ธฐ๋กœ ํ•ด์„œ ์ด๋ ‡๊ฒŒ ํ‘ธ๋Š” ๊ฒƒ์ด ์˜ณ์€ ๊ฒƒ์ธ๊ฐ€ ์ƒ๊ฐ์ด ๋“ค์–ด ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ์ฐพ์•„๋ดค๋”๋‹ˆ ํ‘œ๋ฅผ ๊ทธ๋ ค ๊ทœ์น™์„ฑ์„ ์ฐพ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋งŽ์ด ํ’€์ดํ–ˆ๋‹ค. ์ฒดํฌํ•ด๋‘๊ณ  ๋‹ค์‹œ ํ’€์–ด๋ด์•ผ๊ฒ ๋‹ค.