코딩테스트

BOJ : 11728

joonwoong 2024. 6. 10. 00:37

1. 문제

 

2. 문제 설명 및 알고리즘 설계

 

- 정렬이 되어있는 배열이므로 배열을 따로 정렬할 필요가 없음

- 배열들의 첫번째 인덱스를 지정할 변수 2개를 지정한다.

- 첫번째 인덱스들부터 확인한다

         규칙 1. 같을 경우 둘 다 넣고 인덱스 둘다 ++
         규칙 2. 작은 값을 넣고 넣은 배열 인덱스 ++

         규칙 3. 한쪽이 다 돌게 되면 다른 쪽 다넣고 ++ 반복

 

3. 코드

package week10;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Q11728_boj {
    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 fir[] = new int[N];
        int sec[] = new int[M];

        st = new StringTokenizer(br.readLine());
        for(int i=0;i<N;i++){
            fir[i] = Integer.parseInt(st.nextToken());
        }

        st = new StringTokenizer(br.readLine());
        for(int i=0;i<M;i++){
            sec[i] = Integer.parseInt(st.nextToken());
        }

        int first = 0;
        int second = 0;

        while(first<N && second<M){
            if(fir[first] == sec[second]){
                sb.append(fir[first] + " ");
                first++;
                sb.append(sec[second] + " ");
                second++;
            }else if(fir[first]>sec[second]){
                sb.append(sec[second] + " ");
                second++;
            }else {
                sb.append(fir[first] + " ");
                first++;
            }
        }

        if(second == M){
            for(int i=first;i<N;i++){
                sb.append(fir[i] + " ");
            }
        }
        if(first == N){
            for(int i=second;i<M;i++){
                sb.append(sec[i]+" ");
            }
        }
        System.out.println(sb);
    }
}

 

4. 시간 복잡도

O(N)

 

5. 결과

'코딩테스트' 카테고리의 다른 글

BOJ : 2018  (0) 2024.06.09
BOJ : 20444  (1) 2024.06.06
BOJ : 11687  (0) 2024.06.06
BOJ : 1654  (0) 2024.06.03
BOJ : 10815  (3) 2024.06.02