๋ฐ์ํ
๋ฌธ์ (Gold 4)
https://www.acmicpc.net/problem/1253
ํ์ด
๋ฐฐ์ด์ ๊ฐ๋ค์ ํ๋์ฉ ๋๋ฉฐ, ํฌ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์๊ฐ ์ข์์ง ํ๋ณํ์๋ค.
๋ฌธ์ ์ ๋์์๋ ์์๊ฐ ๋๋ฌด ์๋ช ํ๊ธฐ ๋๋ฌธ์ ์๋ ์์๋ก ์๊ฐํ๊ณ ๋ฌธ์ ๋ฅผ ํ์๋ค.
5
-2 0 1 2 3
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ ฌ์ ์งํํด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด, ํฌํฌ์ธํฐ์ ์์ง์์ ๋ฐ๋ฅธ ๋ก์ง์ ์์ฑํ ์ ์๋ค!
- left, right ๊ฐ์ ์ค์ ํด์ฃผ๋๋ฐ, ์ ๋ ฌ์ ํด์ฃผ์๋ค๊ณ right๊ฐ์ i-1๋ก ํด์๋ ์๋๋ค!
-> ์์๊ฐ ์์ด์ ๋๋ณด๋ค ํฐ ์์ ๋ํด๋ ๋ด๊ฐ ๋์ฌ ์ ์๋ ์ํฉ์ด ์๊ธฐ ๋๋ฌธ์ - ๊ฐ ํฌ์ธํฐ ๊ฐ์ ํฉ์ด ๋(numbers[i])๋ณด๋ค ํฌ๋ค๋ฉด, ๋ ์์ ์์ ๋ํด์ผํ๋ฏ๋ก right๊ฐ์ ์์ง์ธ๋ค
๋ฐ๋๋ก ๋๋ณด๋ค ์๋ค๋ฉด, ๋ ํฐ ์์ ๋ํด์ผ ํ๋ฏ๋ก left๊ฐ์ ์์ง์ธ๋ค.
์ฝ๋
๋๋ณด๊ธฐ
package implement;
import java.util.*;
import java.io.*;
public class BOJ_1253_์ข๋ค {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] numbers = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i =0 ; i < N ; i++){
numbers[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(numbers);
int result = 0;
for(int i = 0 ; i < N ; i++){
int left = 0;
int right = N-1; // ์์๊ฐ์ด ์์์ ์ ์!
while(true){
// ํ์ฌ ๋(i)์ ์์น์ ์๋ ๊ฒฝ์ฐ
if(left == i) left++;
else if(right == i) right--;
// ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์ ์ ์๋ค.
if(left >= right) break;
// ์ ๋ ฌ์ด ๋์ด ์์ผ๋ฏ๋ก, ํฉ์ด ๋ ํฌ๋ค๋ฉด ๋ ์์ ์์ ๋ํด์ฃผ์ด์ผ ํ๋๊น ์ผ์ชฝ์ผ๋ก ์์ง์ด๋ right ๊ฐ์ ๋ณ๊ฒฝ
if(numbers[left] + numbers[right] > numbers[i]) right--;
else if(numbers[left] + numbers[right] < numbers[i]) left++;
else{ // ์ข๋ค!
result++;
break;
}
}
}
System.out.println(result);
}
}
์ ์ถ
์ฒ์์ ์ํ์ผ๋ก ๊ณ์ ์๋๋ฅผ ํ๋๋ฐ, ๋ช์ผ์ด ์ง๋๊ณ ๋ณด๋๊น ๋ฐ๋ก ํ์ด๋ฒ์ด ์๊ฐ๋ซ๋ค.
๋ฐ์ํ
'๐ ์๊ณ ๋ฆฌ์ฆ > Implementation' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2531๋ฒ: ํ์ ์ด๋ฐฅ (Java) (0) | 2022.04.14 |
---|---|
[๋ฐฑ์ค] 16639๋ฒ: ๊ดํธ ์ถ๊ฐํ๊ธฐ 3 (0) | 2022.03.29 |
[๋ฐฑ์ค]11660๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5 (Java) (0) | 2022.03.16 |
[๋ฐฑ์ค] 9996๋ฒ: ํ๊ตญ์ด ๊ทธ๋ฆฌ์ธ ๋ ์๋ฒ์ ์ ์ํ์ง (Java) (0) | 2022.03.16 |
[๋ฐฑ์ค] 18222๋ฒ ํฌ์-๋ชจ์ค ๋ฌธ์์ด ( Java ) (0) | 2022.02.16 |