SMALL
1. 문제
https://www.acmicpc.net/problem/1157
2. 주요 개념
- Scanner
- split()
- toUpperCase
- equals()
3. 나의 풀이 (*은 잘 안풀린 부분)
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String str = s.nextLine();
str = str.toUpperCase(); // **대문자로 변환
String[] arr = str.split("");
StringBuilder sb = new StringBuilder();
// 중복 제거한 문자열
for (String a : arr) {
if (sb.indexOf(a) == -1) {
sb.append(a);
}
}
String[] sb_arr = sb.toString().split(""); // 중복 제거 문자들
int[] cnt = new int[sb_arr.length];
for (int i = 0; i < sb_arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if (sb_arr[i].equals(arr[j])) {
// ** 문자열 비교: equals 사용
cnt[i] += 1;
}
}
}
int max = 0; // 최댓값
int maxIndex = 0;
// **최댓값 인덱스 값
// **나중에 결과 출력 시 필요!
// 최댓값 찾기
for (int g = 0; g < cnt.length; g++) {
if (cnt[g] > max) {
max = cnt[g];
maxIndex = g;
}
}
int max_num = 0;
// 최댓값을 가진 배열의 개수
for (int c = 0; c < cnt.length; c++) {
if (cnt[c] == max) {
max_num++;
}
}
// 최댓값 개수에 따른 값 출력
if (max_num >= 2) {
System.out.println("?");
} else if (max_num == 1) {
System.out.println(sb_arr[maxIndex]);
}
}
}
4. 짚고 넘어가기!
- 소문자 > 대문자 변환 : toUpperCase()
- maxIndex > 최댓값 인덱스 사용하여 결과 출력시 인덱스 값으로 사용!
- 문자열 비교 시, equals 사용! ex. str1.equals(str2)
728x90
'Algorithm > Java' 카테고리의 다른 글
[백준] n.4344 - 각 학생 수 별로 평균이 넘는 비율 구하기 (0) | 2023.05.29 |
---|---|
[백준] n.10988- 문자열을 거꾸로 뒤집어도 원래 문자열과 동일한지 확인하기 (0) | 2023.05.26 |
[백준] n.2444 - 마름모모양 별 찍기 (중앙 정렬, 규칙에 따라) (0) | 2023.05.25 |
[백준] n.11718 - 입력 값 그대로 출력하기 (0) | 2023.05.24 |
[백준] n.5622 - 다이얼에 해당하는 문자 식별&사용 시간 구하기 (0) | 2023.05.23 |
댓글