728x90
3273번: 두 수의 합
n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는
www.acmicpc.net
투포인터 개념 아예 다져버릴려고 문제 하나 더 풀어보기로 했다.
특정 target 값을 만족하는 경우의 수 구하는 문제
* 생각해야할 점
1. i < j 이므로 정렬하면 안 됨.
2. 단 두 수의 합이 target이 되어야 하므로 p1, p2 값을 그에 따라 조정.
p1 < p2임에 유의 그 안에 어떤 쌍이든 가능한 것임. 인접한 것이 아니어도 됨.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.SQLOutput;
import java.util.StringTokenizer;
public class TwoPointer_03_2 {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int arr[] = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int target = Integer.parseInt(br.readLine());
int answer = 0;
for (int i = 0; i < n; i++) {
int p2 = i;
long total = 0;
while (p2 < n && total != target) {
total += arr[p2++];
if (total == target) {
answer++;
break;
}
total = arr[i];
}
}
System.out.println(answer);
}
}
1트 3%에서 틀렸다고 나옴.. 왜지
아니 이문제가 정렬을 해도 된다고 ?????
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.SQLOutput;
import java.util.Arrays;
import java.util.StringTokenizer;
public class TwoPointer_03_2 {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int arr[] = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int target = Integer.parseInt(br.readLine());
int answer = 0;
Arrays.sort(arr);
int p1 = 0;
int p2 = n - 1;
int total = 0;
while (p1 < p2) {
if (arr[p1] + arr[p2] < target) {
p1++;
} else if (arr[p1] + arr[p2] > target) {
p2--;
}
if (arr[p1] + arr[p2] == target) {
answer++;
p1++;
p2--;
}
}
System.out.println(answer);
}
}
정렬하고 정석대로 풀어서 맞았다..
728x90
'알고리즘 > 백준' 카테고리의 다른 글
(백준/자바) 힌트문제3 05. 그리디 - 백준 11047번 문제 : 동전 0 (0) | 2023.08.06 |
---|---|
(백준/자바) 힌트문제3 04. 다이나믹 프로그래밍 - 백준 1890번 문제 : 점프 (0) | 2023.08.06 |
(백준/자바) 힌트문제3 03. 투 포인터 - 백준 2003번 문제 : 수들의 합2 (0) | 2023.08.06 |
(백준/자바) 힌트문제3 02. 2차원배열 - 백준 2167번 문제 : 2차원 배열의 합 (0) | 2023.08.06 |
(백준/자바) 힌트문제3 01. 팰린드롬 - 백준 1254번 문제 : 팰린드롬 만들기 (0) | 2023.08.06 |