🌞Algorithm/🔥Baekjoon

[Baekjoon] 2238_경매

뿌야._. 2024. 8. 9. 23:38
문제(출처: https://www.acmicpc.net/problem/2238)

< 경매 >

 

문제 풀이 

 

1) 가장 적은 수의 사람이 제시한 가격 찾기

2) 가장 낮은 가격

3) 가장 먼저 제시한 사람

을 순서대로 찾는다.

 

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.StringTokenizer;

public class _2238_ { // 경매

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());

		int U = Integer.parseInt(st.nextToken());
		int N = Integer.parseInt(st.nextToken());

		HashMap<Integer, ArrayList<String>> map = new HashMap<>();
		for (int i = 0; i < N; i++) {
			st = new StringTokenizer(bf.readLine());

			String name = st.nextToken();
			int P = Integer.parseInt(st.nextToken());

			if (!map.containsKey(P)) {
				map.put(P, new ArrayList<>());
			}
			ArrayList<String> list = map.get(P);
			list.add(name);
			map.replace(P, list);
		}

		ArrayList<Integer> key = new ArrayList<>(map.keySet());
		key.sort(new Comparator<Integer>() {

			@Override
			public int compare(Integer o1, Integer o2) {
				if (map.get(o1).size() == map.get(o2).size()) {
					return o1 - o2;
				}
				return map.get(o1).size() - map.get(o2).size();
			}
		});
		System.out.println(map.get(key.get(0)).get(0) + " " + key.get(0));
	}
}
변수)
U, N : 금액의 상한, 경매에 참여한 횟수
map : <금액, 금액을 제시한 사람을 저장한 ArrayList>
name, P : 사람 이름, 제시한 가격
key : map의 key값을 ArrayList로 변환

 

금액의 상한과 경매에 참여한 횟수를 입력받는다. 경매에 참여한 횟수만큼 사람 이름과 제시한 가격을 입력받아 map에 key 값으로 제시한 가격을, value로 사람 이름을 저장한 ArrayList를 저장한다. map의 key값을 ArrayList로 변환한다. key를 1) map의 value의 크기 오름차순 2) map의 key 오름차순 기준으로 정렬한다. 

 

최종 key의 0번째 값을 key값으로 가지는 map의 value의 0번째 값과 key의 0번째 값을 출력한다.



 

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글

[Baekjoon] 9342_염색체  (0) 2024.08.27
[Baekjoon] 11068_회문인 수  (0) 2024.08.26
[Baekjoon] 13717_포켓몬 GO  (0) 2024.08.08
[Baekjoon] 1254_팰린드롬 만들기  (0) 2024.08.07
[Baekjoon] 2304_창고 다각형  (0) 2024.08.05