1. ๋ ๋ฐฐ์ด ํฉ์น๊ธฐ ( two pointers algorithm )
2. ๊ณตํต์์๊ตฌํ๊ธฐ( two points algorithm )
3. ์ต๋ ๋งค์ถ( Sliding window )
4. ์ฐ์๋ถ๋ถ์์ด ( ๋ณตํฉ์ ๋ฌธ์ )
5.1 ์ฐ์๋ ์์ฐ์์ ํฉ ( two pointers )
5.2 ์ฐ์๋ ์์ฐ์์ ํฉ ( ์ํ )
6. ์ต๋ ๊ธธ์ด ์ฐ์๋ถ๋ถ์์ด ( ๋ณตํฉ์ ๋ฌธ์ )
1. ๋ ๋ฐฐ์ด ํฉ์น๊ธฐ ( two pointers algorithm )
import java.util.*;
public class Main {
public ArrayList<Integer> solution(int n, int m, int[] a, int[] b){
ArrayList<Integer> answer=new ArrayList<>();
int p1=0, p2=0;
while(p1<n && p2<m) {
if (a[p1] < b[p2])
answer.add(a[p1++]); // add ํ p1 ์ฆ๊ฐ
else
answer.add(b[p2++]);
}
while(p1<n) answer.add(a[p1++]);
while(p2<m) answer.add(b[p2++]);
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] a=new int[n];
for(int i=0; i<n; i++){
a[i]=kb.nextInt();
}
int m=kb.nextInt();
int[] b=new int[m];
for(int i=0; i<m; i++){
b[i]=kb.nextInt();
}
for(int x : T.solution(n,m,a,b)) System.out.print(x+" ");
}
}
2. ๊ณตํต์์๊ตฌํ๊ธฐ( two points algorithm )
import java.util.*;
public class Main {
public ArrayList<Integer> solution(int n, int m, int[] a, int[] b){
ArrayList<Integer> answer=new ArrayList<>();
Arrays.sort(a); // ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
Arrays.sort(b);
int p1=0, p2=0;
while(p1<n && p2<m){ // two point ์๊ณ ๋ฆฌ์ฆ
if(a[p1]==b[p2]){
answer.add(a[p1++]);
p2++;
}
else if(a[p1]<b[p2]) p1++; // ์์์ชฝ ์ฆ๊ฐ
else p2++;
}
return answer;
}
public static void main(String[] args){
Main T=new Main();
Scanner kb=new Scanner(System.in);
int n=kb.nextInt();
int[] a=new int[n];
for(int i=0; i<n; i++){
a[i]=kb.nextInt();
}
int m=kb.nextInt();
int[] b=new int[m];
for(int i=0; i<m; i++){
b[i]=kb.nextInt();
}
for(int x : T.solution(n,m,a,b)) System.out.print(x+" ");
}
}
3. ์ต๋ ๋งค์ถ( Sliding window )
import java.util.*;
public class Main {
public int solution(int n, int k, int[] arr){
int answer=0;
int sum=0;
for(int i=0; i<k; i++) sum+=arr[i];
answer=sum;
for(int i=k; i<n; i++){
sum+=(arr[i]-arr[i-k]); // sliding window
answer=Math.max(answer,sum);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb=new Scanner(System.in);
int n=kb.nextInt();
int k=kb.nextInt();
int [] arr=new int[n]; // ๋งค์ถ array
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
System.out.print(T.solution(n,k,arr));
}
}
4. ์ฐ์๋ถ๋ถ์์ด ( ๋ณตํฉ์ ๋ฌธ์ )
import java.util.*;
public class Main {
public int solution(int n, int k, int[] arr){
int answer=0, sum=0, lt=0;
for(int rt=0; rt<n; rt++){
sum+=arr[rt];
if(sum==k)
answer++;
while(sum>=k){
sum-=arr[lt++];// ๋บ ํ ์ฆ๊ฐ
if(sum==k)
answer++;
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb=new Scanner(System.in);
int n=kb.nextInt();
int k=kb.nextInt();
int [] arr=new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
System.out.print(T.solution(n,k,arr));
}
}
5.1 ์ฐ์๋ ์์ฐ์์ ํฉ ( two pointers )
import java.util.*;
public class Main {
public int solution(int n){
int answer=0, sum=0, lt=0;
int m=n/2+1;
int[] arr=new int[m];
for(int i=0; i<m;i++) arr[i]=i+1; // 1๋ถํฐ m๊น์ง ์์๋๋ก array
for(int rt=0; rt<m; rt++){
sum+=arr[rt];
if(sum==n)
answer++;
while(sum>=n){
sum-=arr[lt++];
if(sum==n)
answer++;
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb=new Scanner(System.in);
int n=kb.nextInt();
System.out.print(T.solution(n));
}
}
6. ์ต๋ ๊ธธ์ด ์ฐ์๋ถ๋ถ์์ด ( ๋ณตํฉ์ ๋ฌธ์ )
import java.util.*;
public class Main {
public int solution(int n, int k, int[] arr){
int answer=0, cnt=0, lt=0;
for(int rt=0; rt<n; rt++){
if(arr[rt]==0)
cnt++;
while(cnt>k){
if(arr[lt]==0) cnt--;
lt++;
}
answer=Math.max(answer,rt-lt+1);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb=new Scanner(System.in);
int n=kb.nextInt();
int k=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
System.out.print(T.solution(n,k,arr));
}
}
'๐ ์ฝ๋ฉํ ์คํธ > Inflearn' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์น์ 6. Sorting and Searching(์ ๋ ฌ, ์ด๋ถ๊ฒ์๊ณผ ๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ) (0) | 2022.12.07 |
---|---|
์น์ 5. Stack, Queue(์๋ฃ๊ตฌ์กฐ) (0) | 2022.10.16 |
์น์ 4. HashMap, TreeSet ( ํด์ฌ, ์ ๋ ฌ์ง์ Set ) (0) | 2022.09.28 |
์น์ 1. String(๋ฌธ์์ด) (0) | 2022.08.29 |
์น์ 2. Array( 1,2์ฐจ์ ๋ฐฐ์ด ) (0) | 2022.08.29 |