문제 내용은 위에 할리갈리 게임 설명을 길게 하지만 본질과는 별 상관이 없고, 결국은 입력으로 과일과 갯수를 받아서 합이 5인 과일이 한 종류라도 있으면 YES 아니면 NO를 출력해주면 되는데
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
// 할리갈리 https://www.acmicpc.net/problem/27160
// 과일이 5개 있는 경우에만 YES 아니면 모두 NO
// MAP을 이용해 전체 갯수를 담은 후 5개 있으면 YES / 아니면 NO
public class Haligali {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
HashMap<String, Integer> fruit = new HashMap<>();
for (int i = 0; i < count; i++) {
String[] split = br.readLine().split(" ");
int existValue = fruit.getOrDefault(split[0], 0);
fruit.put(split[0], existValue + Integer.parseInt(split[1]));
}
if (fruit.containsValue(5)) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
처음 입력으로 받은 과일 갯수만큼 for 문을 돌리되, 과일 종류와 숫자를 Map을 사용해서 저장하면 과일별로 숫자를 편하게 관리할 수 있기 때문에 코드를 길게 짤 필요가 없어진다
코드를 보면 for문 돌리면서 map에 key 있으면 값만 더하면서 업데이트하고 그렇지 않으면 신규로 값을 넣어주는 식인데(put) 다 넣어주고 난 다음에는 Map의 ContainsValue를 사용해서 5가 있는 값이 있는지 확인한 후 있으면 YES 없으면 NO를 출력해주면 끝이다
Leave a Reply