반응형
투포인터
https://www.youtube.com/watch?v=rI8NRQsAS_s
처음에는 투포인터 문제인지 모르고 풀었다.
그 풀이는 아래와 같다.
풀이 한 코드가 너무 아까워서 남겨둔 것이니, 투포인터 풀이를 보려면 더 아래로 내려가서 확인하면 된다.
import java.util.*;
import java.io.*;
public class Main {
static int n;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(br.readLine());
//n(n+1)/2 = n
int count = 1;//1가지는 무조건있음
for (int i = 2; i < n; i++) {
int div = n / i;
if (find(i, div)) {
count++;
}
}
System.out.println(count);
}
public static boolean find(int plusMinus, int center) {
//center 중심으로 +-
if (plusMinus % 2 == 0) {//짝수인경우 플러스나 마이너스 한쪽 한개많음
int range = (plusMinus) / 2;
if ((center + range < n && center - (range - 1) > 0)
&& getSum(center - (range - 1) , center + range) == n)
return true;//오른쪽으로 두칸 왼쪽 한칸
if (center - range > 0 && center + (range - 1) < n
&& getSum(center - range, center + (range - 1)) == n) {//왼쪽 두칸 오른쪽 한칸
return true;
}
} else {
int range = (plusMinus - 1) / 2;
if (center + range < n && center - range > 0
&& getSum(center - range, center + range) == n) {
return true;
}
}
return false;
}
public static int getSum(int start, int end) {
int sum = 0;
for (int i = start; i <= end; i++) {
sum += i;
}
return sum;
}
}
투포인터 풀이
import java.io.*;
public class Main {
static int n, count = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
twoPointer();
System.out.println(count);
}
public static void twoPointer() {
int left = 0, right = 0, sum = 0;
while (left <= n) {
while (++right <= n) {
sum += right;
if (sum >= n) {
if (sum == n) count++;
break;
}
}
while (++left <= n) {
sum -= left;
if (sum <= n) {
if (sum == n) count++;
break;
}
}
}
}
}
반응형
'코딩테스트 > Java' 카테고리의 다른 글
[JAVA] 2467 용액, 14921 용액합성하기, 2473 세 용액 (0) | 2022.03.17 |
---|---|
[JAVA] 백준 적록색약 (0) | 2022.02.26 |
[JAVA] 백준 그대, 그머가 되어 (0) | 2022.02.25 |
[JAVA] 백준 끝나지 않는 파티(플로이드워셜) (0) | 2022.02.14 |
[JAVA] 백준 수강신청 (0) | 2022.02.09 |