728x90
https://www.acmicpc.net/problem/1157
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next().toUpperCase(); // 문자열 입력 받음
int check[] = new int[26];
for (int i = 0; i < s.length(); i++) // 문자 등장 횟수 카운트
check[s.charAt(i) - 'A']++;
int max = check[0];
for (int i = 0; i < check.length; i++) { // max 업데이트
if (check[i] > max)
max = check[i];
}
int cnt = 0, idx = 0;
for (int i = 0; i < check.length; i++) { // 가장 많이 등장하는 문자 체크
if (max == check[i]) {
cnt++;
idx = i;
}
else if (cnt >= 2) break;
}
if (cnt == 1)
System.out.println((char)(idx + 'A'));
else System.out.println("?");
sc.close();
}
}
설명
맨 처음 입력받은 문자열을 대문자화하여 저장한다.
정수 배열로 문자열의 아스키코드를 이용해 해당 문자의 등장 빈도수를 카운트한다.
이후 for문을 이용해 가장 많이 등장하는 문자의 빈도수를 max에 저장한다.
다른 for문으로 max만큼 등장하는 문자가 몇 개 있는지 cnt에 저장하고, 해당 인덱스를 idx에 저장한다.
만약 cnt가 1이면 max만큼 등장하는 문자가 하나 있는 것이므로 해당 문자의 인덱스에 'A'(65)를 더한 값을 char형으로 변환하여 출력한다.
cnt가 1이 아니라면 max만큼 등장하는 문자가 여러 개이므로 '?'를 출력한다.
728x90
'JAVA > BOJ' 카테고리의 다른 글
[백준] 2675번: 문자열 반복 (0) | 2021.07.19 |
---|---|
[백준] 1929번: 소수 구하기 (1) | 2021.07.18 |
[백준] 4153번: 직각삼각형 (0) | 2021.07.18 |
[백준] 1546번: 평균 (0) | 2021.07.11 |
[백준] 2753번: 윤년 (1) | 2021.07.11 |