CODING TEST

기초수학 - 집합(Set)과 관련 코딩테스트 문제들

우진하다 2023. 5. 31. 06:30

프로그래머스 - 두 개 뽑아서 더하기.

이중 반복문을 돌려서 각 원소의 합을 set에 넣어준다. 
set은 순서를 보장하지 않기때문에 배열에 담은 후 sort해준다.

    

import java.util.HashSet;
import java.util.Arrays;

class Solution {
    public int[] solution(int[] numbers) {
        HashSet set = new HashSet<>();
        for (int i = 0; i < numbers.length - 1; i++) {
            for (int j = i + 1; j < numbers.length; j++) {
                set.add(numbers[i] + numbers[j]);
            }
        }
        
        
        int[] answer = new int[set.size()];
        int idx = 0;
        for (int num : set) {
            answer[idx++] = num;
        }
        Arrays.sort(answer);
        return answer;
    }
}

    
  

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/68644

 

프로그래머스 - 폰켓몬

입력받은 배열을 set에 넣어준다.
폰켓몬 종류의 개수와 선택할 수 있는 폰켓몬의 개수 중 작은 값을 선택하면, 
가장 많은 종류의 폰켓몬을 선택할 수 있는 방법을 찾을 수 있음

    

import java.util.HashSet;

class Solution {
    public int solution(int[] nums) {
        HashSet set = new HashSet<>();
        for (int n : nums) {
            set.add(n);
        }
        
        int numOfMonsters = nums.length / 2;
        int numOfSpecies = set.size();
        
        if (numOfSpecies > numOfMonsters) {
            return numOfMonsters;
        } else {
            return numOfSpecies;
        }
    }
}

    
  

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

백준 1784번 - 듣보잡

사전순으로 출력해야해 TreeSet 사용
retainAll() 메서드로 교집합 구하고 size()로 크기, 반복문으로 명단 출력

    

import java.util.Scanner;
import java.util.TreeSet;

public class Acmicpc1764 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        TreeSet set1 = new TreeSet<>();
        TreeSet set2 = new TreeSet<>();

        int n = sc.nextInt();
        int m = sc.nextInt();

        for (int i = 0; i < n; i++) {
            set1.add(sc.next());
        }
        for (int i = 0; i < m; i++) {
            set2.add(sc.next());
        }
        set1.retainAll(set2);
        for (String s : set1) {
            System.out.println(set1.size());
            System.out.println(s);
        }
    }
}

    
  

출처 : https://www.acmicpc.net/problem/1764