1. 두 배열 합치기
문제

풀이
import java.util.ArrayList;
import java.util.Scanner;
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++]);
} 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. 공통원소 구하기
문제

풀이
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
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) {
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. 최대 매출
문제

풀이
import java.util.Scanner;
public class Main {
public int solution(int n, int k, int[] arr) {
int answer = 0, 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]);
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];
for(int i = 0; i < n; i++) {
arr[i] = kb.nextInt();
}
System.out.print(T.solution(n, k, arr));
}
}
4. 연속부분수열(복합적 문제)
문제

풀이
import java.util.Scanner;
public class Main {
public int solution(int n, int m, int[] arr) {
int answer = 0, sum = 0, lt = 0;
for(int rt = 0; rt < n; rt++) {
sum += arr[rt];
if(sum == m) {
answer++;
}
while(sum >= m) {
sum -= arr[lt++];
if(sum == m) {
answer++;
}
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int m = kb.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++) {
arr[i] = kb.nextInt();
}
System.out.print(T.solution(n, m, arr));
}
}
5. 연속된 자연수의 합(two pointers)
문제

풀이
import java.util.Scanner;
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;
}
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));
}
}
5. 연속된 자연수의 합(수학)
문제

풀이
import java.util.Scanner;
public class Main {
public int solution(int n) {
int answer = 0, cnt = 1;
n--;
while(n > 0) {
cnt++;
n = n - cnt;
if(n % cnt == 0) {
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.Scanner;
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));
}
}