TIL(Today I Learned)
99클럽 코테 스터디 12일차 TIL + 백준 25757 (임스와 함께하는 미니게임, java)
zincah
2025. 4. 15. 21:12
반응형
오늘의 학습 키워드
- 문자열비교
- HashSet
- enum
문제 탐색하기
문제
문제 풀이 설계하기
이 문제는 HashSet을 활용하면 쉽게 풀 수 있는 문제였습니다. 이름이 set에 있는지를 검사하고 있으면 넘어가고 없으면 set에 넣어주며 게임을 함께 진행하도록 로직을 설계하면 됩니다.
게임의 이름, 게임을 함께 진행하는 인원수를 세팅하여 가독성을 높이고 반복적인 조건문을 사용하지 않기위해 enum 클래스를 사용하였습니다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
public class Main {
private static enum GAME{
Y("Y", 2),
F("F", 3),
O("O", 4);
private String game;
private int people;
GAME(String game, int people) {
this.game = game;
this.people = people;
}
public String getGame(){
return this.game;
}
public int getPeople(){
return this.people;
}
}
public static Set<String> name = new HashSet<>();
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int N = Integer.parseInt(input[0]);
String gameId = input[1];
// enum 클래스와 입력받은 game을 바로 비교하여 게임을 진행하는 인원수 세팅 가능
int people = GAME.valueOf(gameId).getPeople();
int result = 0;
int cnt = 1;
for(int i=0; i<N; i++){
String str = br.readLine();
if(name.contains(str)){
continue;
}
name.add(str);
cnt++;
if(cnt == people) {
cnt = 1;
result++;
}
}
System.out.println(result);
}
}
오늘의 회고
HashSet을 사용해서 쉽게 접근할 수 있는 문제였고, 여기에 enum클래스를 활용하여 지저분한 조건문의 반복을 없애서 로직을 작성할 수 있었지만 역시나 enum클래스를 따로 선언해줘야 했습니다.
어떻게 코드를 설계하는 것이 좋을 지 고민되는 시간이었습니다.
반응형