https://codeforces.com/problemset/problem/1257/A
์ฝ๋
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int t = scan.nextInt();
for(int tc=0; tc<t; tc++) {
int n = scan.nextInt(); // ํ์ ์
int x = scan.nextInt(); // ์ค์ ์
int a = scan.nextInt(); // ํ์ 1
int b = scan.nextInt(); // ํ์ 2
int max = 0; // ๋ ํ์์ฌ์ด ์ต๋๊ฑฐ๋ฆฌ
// swap ๊ธฐํ๊ฐ 0์ด๋ฉด ๋ฐ๋ก ์ถ๋ ฅ
if(x == 0) {
System.out.println(Math.abs(a-b));
continue;
}
// swap์ ํ์ง ์์๋ ์ด๋ฏธ ๋ํ์ ๊ฑฐ๋ฆฌ๊ฐ ์ต๋์ผ๊ฒฝ์ฐ๋ ์ด๋ฏธ ์ถ๋ ฅ
if(Math.abs(a-b) + 1 == n) {
System.out.println(Math.abs(a-b));
continue;
}
// ์ ๋๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณค ๋ํ์ ๊ฑฐ๋ฆฌ๋ฅผ swapํ์๋งํผ ๋๋ฆฐ๋ค.
int diff = Math.abs(a-b) + x;
// ๋ํ์ ๊ฑฐ๋ฆฌ๋ฅผ swapํ์๋งํผ ๋๋ ธ์๋, ๊ธฐ์กด์ ์ต๋๋ฒ์๋ฅผ ๋์๊ฒฝ์ฐ
if(diff >= n)
System.out.println(n-1);
else
System.out.println(diff);
}
scan.close();
}
}
ํ์ด
x ์๋งํผ ๋ ํ์์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฒ๋ฆด ์ ์๊ณ , ๋ ํ์์ ๊ฑฐ๋ฆฌ๊ฐ ์ต๋๊ฐ ๋๋๋ก ๋ง๋ค๊ธฐ.
1) ์ฃผ์ด์ง swap์ ๊ธฐํ๊ฐ 0์ธ๊ฒฝ์ฐ(x = 0)
- ๋ ํ์์ ์ด๋ํ ์ ์์ผ๋ฏ๋ก ํ์ฌ ๋ ํ์์ ๊ฑฐ๋ฆฌ ์ฐจ์ด๋ฅผ ์ถ๋ ฅํ๋ค.
2) ์ฃผ์ด์ง swap์ ๊ธฐํ์ ์๊ด์์ด ์ด๋ฏธ ๋ ํ์์ฌ์ด์ ๊ฑฐ๋ฆฌ๊ฐ ์ต๋์ผ๋
- ๊ทธ๋ฅ ํ์ฌ ๋ ํ์์ ๊ฑฐ๋ฆฌ ์ฐจ์ด๊ฐ ์ต๋์ด๋ฏ๋ก ๊ทธ๋๋ก ์ถ๋ ฅํ๋ค.
3) ์ ๋๊ฐ์ง๊ฐ ์๋๊ฒฝ์ฐ, swap์ ๊ธฐํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ค.
- ๋ ํ์์ ๊ฑฐ๋ฆฌ๋ ํ์ฌ ๊ฑฐ๋ฆฌ์ ์ฐจ์ด์์ swap์ ๊ธฐํ๋ฅผ ๋ํ๋๊ฒ ์ต๋ ๊ฑฐ๋ฆฌ๊ฐ ๋๋ค.
- swap ํ๋ฒ๋น ๋ํ์์ ๊ฑฐ๋ฆฌ๋ 1์ฉ ๋ฒ์ด์ง๊ธฐ ๋๋ฌธ.
โ 3-1) ๋ง์ฝ ์ ๊ณผ์ ์์ swap์ ๋ชจ๋ ๋ํ๋๋ฐ ๋ ํ์์ ์ต๋ ๊ฑฐ๋ฆฌ๋ณด๋ค ์ปค์ง๋ ๊ฒฝ์ฐ ?
- ๋ ์ปค์ง๋ฉด ์ฃผ์ด์ง ํ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ต๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ถ๋ ฅํ๋ค.(1~n์ด๋ฏ๋ก ๊ฑฐ๋ฆฌ์ต๋๋ n-1)
โ 3-2) ์ ๊ณผ์ ์์ swap์ ๋ชจ๋ ๋ํ์๋ ์ต๋ ๊ฑฐ๋ฆฌ๋ณด๋ค ์์์ง๋ ๊ฒฝ์ฐ๋ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ค.
ํ์ค ํ์ด
System.out.println(Math.min(n - 1, Math.abs(a - b) + x));
์ ํ์ค์ด๋ฉด ๋๋๋ค ....................... ;; wOw
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)์คํฌํธ๋ฆฌ (2) | 2020.03.19 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)์์ ๋ง๋ค๊ธฐ (0) | 2020.03.18 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)์์ด ๋๋ง์๊ธฐ (0) | 2020.03.18 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)์ฌ๋ฐ๋ฅธ ๊ดํธ (0) | 2020.03.17 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)์ ํ์ ์๊ฐ ์ด๋ (0) | 2020.03.17 |
๋๊ธ