문제
레벨: S5
알고리즘: 투 포인터
풀이시간: 30분
힌트 참조 유무: 무
https://www.acmicpc.net/problem/11728
1 번째 시도
1. 두 개의 포인터가 각각의 패열 최근 원소 지목하기
2. 포인터가 지정하는 값들 비교해서 작은 값 넣기
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int [] a = new int[n];
int [] b = new int[m];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
a[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
for (int i = 0; i < m; i++) {
b[i] = Integer.parseInt(st.nextToken());
}
int p1 = 0, p2=0;
while(p1<n && p2<m) { //두개의 배열 길이만큼만 탐색해야 하므로
if(a[p1]<= b[p2]) {
sb.append(a[p1++]+" ");
}
else {
sb.append(b[p2++]+" ");
}
}
//두개의 배열 길이가 같지 않은 경우 값을 다 담지 못하는 경우가 발생한다.
//그래서 한 배열의 탐색이 완료한 후에는 다른 배열의 남아있는 값도 넣어주어야 한다.
if(p1==n) {
for (int i = p2; i < m; i++) {
sb.append(b[i]+" ");
}
}
if(p2==m) {
for (int i = p1; i < n; i++) {
sb.append(a[i]+" ");
}
}
System.out.println(sb);
}
}
투 포인터 안 쓴 버전
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()); //첫번째 배열 길이
int m = Integer.parseInt(st.nextToken()); //두번째 배열 길이
int [] arr = new int[n+m]; //정렬할 배열 초기화
st = new StringTokenizer(br.readLine()); //첫번째 배열
for (int i = 0; i < n; i++) {
arr[i]= Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine()); //두번째 배열
for (int i = 0; i < m; i++) {
arr[i+n] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr); //정렬
StringBuilder sb = new StringBuilder();
for(int r : arr) {
sb.append(r+" ");
}
System.out.println(sb);
}
}
굳이 투 포인터를 써야 되나 싶다. 이리 간단하게 하면 될 것을.
속도도 이게 더 빠르다. 이번 문제는 투포인터로 보기 애매하다.
'알고리즘 > 투포인터' 카테고리의 다른 글
[백준 7543] 합이 0인 네 정수 / 자바 / 투포인터 (0) | 2024.09.09 |
---|---|
[백준 2407] 두 용액 / 자바 / 투 포인터 (0) | 2024.06.17 |
[백준 1644] 소수의 연속합 (0) | 2024.06.16 |