728x90
인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 간략한 문제 설명, 예습 풀이 코드, 강의에서 설명하는 풀이 코드를 정리하고 있습니다.
- 문제 링크 : https://cote.inflearn.com/contest/10/problem/04-01
- 문제 설명 : 학급 회장 선거에 A,B,C,D,E 후보가 등록, 투표에 참여하는 반 학생수 n명과 투표 결과가 n개 길이의 문자열(문자열의 각 문자는 투표한 후보 알파벳)이 주어졌을 때 어떤 후보가 당선되었는지 출력하는 문제
예습 풀이
- 아스키 코드 값을 활용하여 득표 수를 저장하는 배열의 인덱스로 후보 알파벳을 사용.
- A의 아스키 코드 값은 65인 것을 활용하여, A의 배열 인덱스는 'A'-65로 0이다.
package inflearn.hashmap_treeset;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
//학급회장
public class Main4_1 {
public static char solution(int n, char[] arr) {
int[] count = new int[n];
for (int i = 0; i < n; i++) {
count[arr[i]-65]++;
}
int maxIdx = 0, maxCnt = count[0];
for (int i = 1; i < n; i++) {
if (maxCnt < count[i]) {
maxIdx = i;
maxCnt = count[maxIdx];
}
}
return (char)(maxIdx+65);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String s = br.readLine();
char[] arr = new char[n];
for (int i = 0; i < n; i++) {
arr[i] = s.charAt(i);
}
System.out.println(solution(n, arr));
br.close();
}
}
강의 수강 후 복습 풀이
- 키를 후보, 값을 득표수로 하는 HashMap을 사용하여 풀이
public static char solution2(int n, char[] arr) {
char answer = ' ';
Map<Character, Integer> map = new HashMap<>();
for (char c : arr) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
int max = 0;
for (char key : map.keySet()) {
if (map.get(key) > max) {
answer = key;
max = map.get(key);
}
}
return answer;
}
댓글