[BOJ] 1157 - 단어 공부 (🥉 브론즈 1티어)
사용 언어: Java
문제
풀이
나의 풀이
자바
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
int[] cnt = new int[91]; // Z = 90
String S = in.readLine();
for (char c : S.toCharArray()) { // 개수 세기
cnt[(int)Character.toUpperCase(c)] += 1;
}
int max = -1;
for (int i=65; i<91; i++) { // 최댓값 찾기
if (cnt[i] > max) max = cnt[i];
}
ArrayList<Character> ans = new ArrayList<>();
for (int i=65; i<91; i++) {
if (cnt[i] == max) ans.add((char)i);
}
if (ans.size() != 1) {
out.write("?");
} else {
out.write(String.valueOf(ans.get(0)));
}
out.close();
in.close();
}
}
- 테스트 케이스: 성공
- 제출 결과: 성공
다른 풀이
자바
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
int[] cnt = new int[91]; // Z = 90
String S = in.readLine();
for (char c : S.toCharArray()) { // 개수 세기
cnt[(int)Character.toUpperCase(c)] += 1;
}
int max_idx = 65; // ✅ 최댓값의 인덱스
for (int i=65; i<91; i++) {
if (cnt[i] > cnt[max_idx]) max_idx = i;
}
boolean flag = false;
for (int i=65; i<91; i++) {
// ✅ max와 값이 같으면서 인덱스는 다르면 최댓값이 두 개 이상인 것
if (cnt[i] == cnt[max_idx] && i != max_idx) { // ✅ 여기서 i != max_idx 를 체크하기 위해 '최댓값'이 아닌 '최댓밗의 인덱스'를 구해놓은 것
out.write("?");
flag = true;
break;
}
}
if (!flag) {
out.write(String.valueOf((char)max_idx));
}
out.close();
in.close();
}
}
- 테스트 케이스: 성공
- 제출 결과: 성공
💛 개인 공부 기록용 블로그입니다. 👻