백준 JAVA11 25757번 : 임스와 함께하는 미니게임
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