Q3 - 2 공통원소 구하기

2021. 9. 5. 19:11·코딩 테스트/3. Tow pointers, Sliding window
728x90
반응형

2. 공통원소 구하기

 

* 설명

A, B 두 개의 집합이 주어지면 두 집합의 공통 원소를 추출하여 오름차순으로 출력하는 프로그램을 작성하세요.

 

* 입력

첫 번째 줄에 집합 A의 크기 N(1<=N<=30,000)이 주어집니다.

두 번째 줄에 N개의 원소가 주어집니다. 원소가 중복되어 주어지지 않습니다.

세 번째 줄에 집합 B의 크기 M(1<=M<=30,000)이 주어집니다.

네 번째 줄에 M개의 원소가 주어집니다. 원소가 중복되어 주어지지 않습니다.

각 집합의 원소는 1,000,000,000이하의 자연수입니다.

 

* 출력

두 집합의 공통원소를 오름차순 정렬하여 출력합니다.

 

* 예시 입력 1 

5

1 3 9 5 2

5

3 2 5 7 8

* 예시 출력 1

2 3 5

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int in1 = in.nextInt();
		//ArrayList<Integer> in2 = new ArrayList<Integer>();
		HashMap<Integer, Integer> in2 = new HashMap<Integer, Integer>();
		int tmp = 0;
		for(int i = 0; i<in1; i++) {
			tmp = in.nextInt();
			in2.put(tmp, tmp);
			
		}
		int in3 = in.nextInt();
		//HashMap<Integer, Integer> out = new HashMap<Integer, Integer>();
		ArrayList<Integer> out = new ArrayList<Integer>();
		
		for(int i = 0; i<in3; i++) {
			tmp = in.nextInt();
			if(in2.containsKey(tmp)) {
				out.add(tmp);
			}
		}
		
		Collections.sort(out);
		for(int i : out) {
			System.out.print(i + " ");	
		}
		
		in.close();
		return;

	}

}

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
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+" ");
	}
}
728x90
반응형

'코딩 테스트 > 3. Tow pointers, Sliding window' 카테고리의 다른 글

Q3 - 5 연속된 자연수의 합  (0) 2021.09.08
Q3 - 6 최대 길이 연속부분수열  (0) 2021.09.08
Q3 - 4 연속 부분수열  (0) 2021.09.07
Q3 - 3 최대 매출  (0) 2021.09.05
Q3 - 1 두 배열 합치기  (0) 2021.09.05
'코딩 테스트/3. Tow pointers, Sliding window' 카테고리의 다른 글
  • Q3 - 6 최대 길이 연속부분수열
  • Q3 - 4 연속 부분수열
  • Q3 - 3 최대 매출
  • Q3 - 1 두 배열 합치기
길동이이이잉
길동이이이잉
길동이이이잉
코딩 일기
길동이이이잉
코딩 일기일까......?
삽질...... 일기일까?
반응형
250x250
  • 모든 글 (97)
    • 개발일기 (9)
      • Project (9)
      • React (1)
      • DB, SQL (7)
      • Spring (5)
      • AWS (1)
    • 코딩 테스트 (63)
      • 1. String(문자열) (12)
      • 2. Array(1, 2차원 배열) (12)
      • 3. Tow pointers, Sliding wi.. (6)
      • 4. HashMap, HashSet, TreeSe.. (5)
      • 5. Stack, Queue (8)
      • 6. Sorting and Searching (8)
      • 7. Recursive, Tree, Graph (11)
      • 8. DFS, BFS 활용 (0)
      • 9. ... (1)
    • 갔다왔다 워홀! (2)

인기 글

태그

spring
유럽
s3대용량업로드
s3대용량파일업로드
Oracle
AWS
Tactical Design
워홀
reactnative
워킹홀리데이
Strategic Design
달력프로젝트
aws업로드
SpringBoot
아일랜드
전략적 설계
전술적 설계
아일랜드워홀
유럽워홀
React

최근 글

hELLO· Designed By정상우.v4.5.3
길동이이이잉
Q3 - 2 공통원소 구하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.