[링크] : https://www.acmicpc.net/problem/11557
💎 문제 분석 & 제약 조건
문제 분석 :
여러 테스트 케이스에 대해 각 학교의 술 소비량을 비교
각 테스트 케이스마다 가장 많은 술을 소비한 학교의 이름을 출력
제약 조건 :
1 ≤ 테스트 케이스 수 (T) ≤ 100
1 ≤ 학교 수 (N) ≤ 100
학교 이름 길이: 1 ≤ |S| ≤ 20 (공백 없는 알파벳 문자열)
술 소비량: 0 ≤ L ≤ 10,000,000
같은 테스트 케이스 내에서 소비량이 같은 학교는 없음
🚀 의사 결정
1. BufferedReader 사용: 빠른 입력 처리를 위해 선택
2. long 타입 사용: 최대 소비량이 10,000,000까지 가능하므로 long 타입 사용
3. 단순 비교 방식: 별도의 정렬 없이 순차적으로 비교하여 최대값 갱신
4. 문자열 분리: split() 메소드를 사용하여 학교 이름과 소비량 분리
📜 소스코드(Java)
1. BufferedReader 로 입력을 받고 , InputSreamReader로 메모리 효율을 향상 시키고
2. System.out.print 대신 BufferedWriter로 출력
3. StringTokenizer로 BufferedReader의 readLine() 메서드를 사용해 읽어온 내용은 토큰화 해서
4. school 객체에 Integer.parseInt로 문자열을 정수형으로 형변환 해서 넣어준다.
5. sort를 사용해서 내림차순을 한다.
6. 내림차순에서 최솟값을 꺼내서 개행한다.
7. 메모리 누수를 방지하기 위해 BufferedWriter 를 닫는다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // BufferedReader 입력 받아서
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // BufferedWriter 출력
int T = Integer.parseInt(br.readLine()); // 테스트 케이스 수
for (int i = 0; i < T; i++) {
int N = Integer.parseInt(br.readLine()); // 학교 수
List<School> school = new ArrayList<>();
for (int j = 0; j < N; j++) {
StringTokenizer st = new StringTokenizer(br.readLine());
// StringTokenizer로 BufferedReader의 readLine() 메서드를 사용해 읽어온 내용은 토큰화 해서
school.add(new School(st.nextToken(), Integer.parseInt(st.nextToken())));
// school 객체에 Integer.parseInt로 문자열을 정수형으로 형변환 해서 넣어준다.
}
school.sort(Comparator.comparing(School::getAlcohol).reversed());
// school 객체에서 sort를 사용해서 내림차 순 정렬
bw.write(school.get(0).name + "\n");
// school 객체에서 최소값을 꺼내서 개행
}
bw.flush();
bw.close(); // 메모리 누수를 방지하기 위해서, BufferedWriter를 닫는다.
}
// shcool 객체 생성
static class School {
String name; // 학교 이름
int alcohol; // 술 소비량
public School(String name, int alcohol) {
this.name = name;
this.alcohol = alcohol;
}
public int getAlcohol() {
return alcohol;
}
}
}
'알고리즘' 카테고리의 다른 글
| [백준] 문제 2309번 : 일곱난쟁이 - JAVA (0) | 2024.12.05 |
|---|---|
| [백준] 문제 1946번 : 신입 사원 - JAVA (0) | 2024.12.04 |
| [백준] 문제 28114번 : 팀명 정하기 - JAVA (1) | 2024.12.02 |
| [백준] 문제 1026번 : 보물 - JAVA (1) | 2024.12.01 |
| [백준] 문제 14235 : 크리스마스 선물 - JAVA (0) | 2024.11.30 |
| [백준] 문제 2346 : 풍선 터뜨리기 - JAVA (0) | 2024.11.30 |
| [백준] 문제 1158번 : 요세푸스 - JAVA (3) | 2024.11.30 |
| [백준] 문제 1927번 : 최소 힙 - JAVA (0) | 2024.11.29 |