Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- SQL
- dateobject
- node.js
- 올바른괄호
- function
- 자바스크립트
- 웹개발종합반
- MySQL
- java기초
- 스택큐
- 스파르타코딩클럽
- padEnd
- 프로그래머스
- Database
- LEFTJOIN
- gethours
- appendChild
- javascropt
- classname
- 백준3052번
- JavaScript#조건문#conditional
- 시간보여주기
- classList
- padStart
- getMinutes
- sanitize-html
- Login
- localstorage
- JavaScript
- JOIN
Archives
- Today
- Total
just do it
좋다/백준1253번/투포인터(java) 본문
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
package myapp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class doit5 {
public static void main(String[] args) throws IOException {
BufferedReader bu = new BufferedReader(new InputStreamReader(System.in));
int N= Integer.parseInt(bu.readLine());//한개만 읽어들이므로 스트링토크나이저 안씀
long a[]=new long[N];
StringTokenizer st = new StringTokenizer(bu.readLine());
for (int i=0; i<10;i++) {//N개수 받아들인거 배열에 저장
a[i]=Long.parseLong(st.nextToken());
}
Arrays.sort(a);//import로 배열해주는거 가져다씀
int result =0;
for(int k=0; k<N;k++) {
long find = a[k];
int i=0;
int j= N-1;
while(i<j) {
if(a[i]+a[j]==find) {
if(i!=k && j!=k) {
result++;
break;
}else if(i==k) {
i++;
}else if(j==k) {
j--;
}
}else if(a[i]+a[j]<find) {
i++;
}else {
j--;
}
}
}
System.out.println(result);
bu.close();
}
}
|
cs |
a[i]+a[j]==find일때 조건문 이해하기
배열에 0을 포함했을때, 그리고 같은수가 있을때 이야기임
k=i인경우는 예를들어
-3 -3 -2 -1.5 0 인경우를 들 수 있음
k=0, i=0, j=4일때
맨앞 -3과 맨끝 0이 -3이 되지만 i, k가 같으므로 안됨
그치만 -3다음 -3이면 가능, 같은수라도 다른 자리에 있으면 다른수로 취급하므로.
i++ 해줌
만약 여기서 j--해줘버리면
-3 만드는데
-3 -1.5 선택해서 안되고 작으니까 i증가시켜
-3 -1.5 작으니까 i증가시켜
-2 -1.5 해서 끝까지 안만들어짐
그렇기도 하고 i=k인경우 j번째가 0이라는건데 같은수 i+1번째에 있을수있으니 이동
k=j인 경우는 예를들어
0 1 2 3 3 인경우
i=0, j=4, k=4일때
0+3=3이 되지만 j,k 겹치니까 안됨
이때 j=3일때는 똑같이 3이지만 마찬가지로 다른 수로 취급하므로 가능
j--해줌
'자료구조&알고리즘 > 코딩테스트' 카테고리의 다른 글
BufferedWriter, 백준15552번, java (0) | 2022.09.26 |
---|---|
백준 12891번/DNA비밀번호/java (0) | 2022.09.26 |
수들의합5/백준2018번/투포인터(do it) (1) | 2022.09.20 |
백준11660/구간합구하기5 (0) | 2022.09.17 |
구간 합 구하기/백준 11659번(java) (0) | 2022.09.15 |