Tany
백문이불어일Tany
Tany
전체 방문자
오늘
어제
  • 분류 전체보기 (197)
    • JAVA TPC (1)
    • JAVA (10)
    • CS (3)
    • SPRING (5)
    • DFS BFS (12)
    • SQL (7)
    • 알고리즘 정리 (76)
    • Git, Github (3)
    • 학습 계획 (36)
    • 코드스쿼드 학습일지 (19)
    • Servlet (5)
    • VPC (2)
    • AWS (4)
    • JPA (5)
    • 취미생활 (2)
    • 프로젝트 기록 (7)
      • Issue Tracker 삽질 기록 (5)
      • 당근마켓 API 서버 기록 (2)
      • 나만의 블로그 제작 기록 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • GIT
  • hash
  • BFS
  • sql
  • 인프런
  • 재귀
  • 완전탐색
  • EC2
  • MVC
  • 주간 학습 계획
  • 정렬
  • MySQL
  • dfs
  • github
  • 자료구조
  • JPA
  • 알고리즘
  • Stack
  • 해시
  • 문자열
  • 백준
  • java
  • 이분탐색
  • 이코테
  • 면접을 위한 CS 전공지식 노트
  • 자바
  • 파이썬
  • AWS
  • JSP
  • 프로그래머스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Tany

백문이불어일Tany

백준 11728번 배열 합치기 (실버 5)
알고리즘 정리

백준 11728번 배열 합치기 (실버 5)

2022. 4. 16. 17:31


Two Pointers 알고리즘을 활용해서 풀었다.

Scanner 로 풀이하니 시간초과, BufferedReader 로 바꿔도 시간초과, BufferedWriter 까지 사용해서 겨우 통과했다 😵‍💫

각 배열마다 Pointer 를 하나 씩 부여하고 Pointer 가 가리키는 인데스를 비교하면서 값이 더 작은 것을 answer 리스트에 추가한다.

하나의 배열만큼 다 돌았으면, 비교할게 없으므로 나머지 배열을 전부 answer 에 다시 추가하면 끝 ! 

먼저 배열을 오름차순으로 정렬해서 풀어야 이렇게 풀어도 문제가 없다.

package backjoonsliver;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;

public class BaekJoon11728 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        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];

        StringTokenizer st1 = new StringTokenizer(br.readLine());
        for (int i = 0; i < a.length; i++) {
            a[i] = Integer.parseInt(st1.nextToken());
        }

        StringTokenizer st2 = new StringTokenizer(br.readLine());
        for (int i = 0; i < b.length; i++) {
            b[i] = Integer.parseInt(st2.nextToken());
        }

        List<Integer> answer = solution(a, b);
        int size = answer.size();

        for (int i = 0; i < size; i++) {
            bw.write(String.valueOf(answer.get(i)));
            bw.write(" ");
        }
        bw.flush();
        bw.close();
    }

    private static List<Integer> solution(int[] a, int[] b) {
        List<Integer> answer = new ArrayList<>();
        Arrays.sort(a);
        Arrays.sort(b);

        int p1 = 0;
        int p2 = 0;

        while (p1 < a.length && p2 < b.length) {
            if (a[p1] < b[p2]) {
                answer.add(a[p1]);
                p1++;
            } else {
                answer.add(b[p2]);
                p2++;
            }
        }

        while (p1 < a.length) {
            answer.add(a[p1]);
            p1++;
        }

        while (p2 < b.length) {
            answer.add(b[p2]);
            p2++;
        }

        return answer;
    }
}


'알고리즘 정리' 카테고리의 다른 글

자바(Java) 알고리즘 문제풀이 학급 회장 [인프런 / Hash]  (0) 2022.04.18
백준 12847번 꿀 아르바이트 (실버 4)  (0) 2022.04.16
백준 10757번[수학] 큰 수 A+B  (0) 2021.10.26
백준 2839번[수학] 설탕 배달  (0) 2021.10.26
백준 2775번[수학] 부녀회장이 될테야  (0) 2021.10.26
    '알고리즘 정리' 카테고리의 다른 글
    • 자바(Java) 알고리즘 문제풀이 학급 회장 [인프런 / Hash]
    • 백준 12847번 꿀 아르바이트 (실버 4)
    • 백준 10757번[수학] 큰 수 A+B
    • 백준 2839번[수학] 설탕 배달
    Tany
    Tany
    내가 보려고 만드는 백엔드 기록장 Github https://github.com/juni8453

    티스토리툴바