less than 1 minute read

Set, Enum

문제 상세보기

Flow.

중복을 허용하지 않는 Set 자료구조와 해싱을 사용해서 풀이

임스는 한 번 같이 플레이한 사람과는 다시 플레이하지 않습니다.

  • 중복을 허용하지 않는다 → Set 사용하여 Input을 해싱

최대 몇 번이나 임스와 함께 게임을 플레이할 수 있는지

  • Math.floorDiv(set.size(), Game.valueOf(game).demandedNumberOfPeople - 1)
  • 여기서 -1 은 고정적인 임스 이다.
  • (set의 사이즈는 중복을 제거한 인원 수) / (미니게임의 필요인원수 - 임스)
  • Math.floorDiv : 두 매개변수를 나누어서 내림 → 필요인원수가 안되면 플레이를 못하기 때문

미니게임은 enum 클래스로 각 게임을 열거형 변수로 만들고 요구되는 인원수를 value로 정의해서 사용

Code.

import java.util.Scanner;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        String game = scanner.next();
        scanner.nextLine();

        Set<String> set = IntStream.range(0, N)
                .mapToObj(i -> scanner.nextLine())
                .collect(Collectors.toSet());

        int count = Math.floorDiv(set.size(), Game.valueOf(game).demandedNumberOfPeople - 1);
        System.out.println(count);
    }
}

enum Game {
    Y(2), F(3), O(4);
    final int demandedNumberOfPeople;

    Game(int demandedNumberOfPeople) {
        this.demandedNumberOfPeople = demandedNumberOfPeople;
    }
}

Leave a comment