🌞Algorithm/🔥Baekjoon

[Baekjoon] 11292_키 큰 사람

뿌야._. 2024. 6. 4. 10:20

Silver V

문제(출처: https://www.acmicpc.net/problem/11292)

< 키 큰 사람 >

 

문제 풀이 

 

같은 키를 가진 사람들끼리 HashMap을 사용하여 묶어둔다. 키만 배열에 저장 후 내림차순으로 정렬한다. 배열의 첫 번째 값에 해당하는 사람들을 출력한다. 

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.StringTokenizer;

public class _11292_ { // 키 큰 사람

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

		int n = -1;
		while ((n = Integer.parseInt(bf.readLine())) != 0) {

			HashMap<Double, ArrayList<String>> map = new HashMap<>();
			Double[] arr = new Double[n];

			for (int i = 0; i < n; i++) {
				st = new StringTokenizer(bf.readLine());
				String name = st.nextToken();
				double height = Double.parseDouble(st.nextToken());

				ArrayList<String> list;
				if (map.containsKey(height)) {
					list = map.get(height);
				} else {
					list = new ArrayList<>();
				}
				list.add(name);
				map.put(height, list);
				arr[i] = height;
			}
			Arrays.sort(arr, Collections.reverseOrder());

			ArrayList<String> list=map.get(arr[0]);
			for(String name: list) {
				bw.write(name+" ");
			}
			bw.write("\n");
		}
		bw.flush();
	}
}
변수)
n : 학생의 수
map : <키, ArrayList <학생 이름>>
arr : 키 배열
name, height : 이름, 키 

 

0이 종료조건 이므로 0이 입력될 때까지 계속해서 다음 과정을 반복한다.

 

1) 학생수만큼 학생 이름과 키를 입력받는다.

2) HashMap을 사용하여 같은 키를 가진 학생들을 묶어둔다. arr배열에는 키만 저장한다.

3) arr 배열을 내림차순으로 정렬한다.

4) 정렬 후 배열 0번째 값에 해당하는 키를 HashMap에서 찾아 value인 학생 이름을 출력한다.  



 

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

[Baekjoon] 1384_메시지  (0) 2024.06.06
[Baekjoon] 11008_복붙의 달인  (0) 2024.06.05
[Baekjoon] 1270_전쟁 - 땅따먹기  (0) 2024.06.03
[Baekjoon] 21920_서로소 평균  (0) 2024.05.30
[Baekjoon] 3054_피터팬 프레임  (0) 2024.05.29