새발블로그
[백준/Java] 1157 단어 공부 본문
문제
https://www.acmicpc.net/problem/1157
풀이방법
먼저, 대소문자를 구분하지 않으므로 소-> 대 , 대-> 소 중에 변환하려했는데 최종 값이 대문자이므로 대문자로 변환하였다.
각 알파벳의 출현빈도를 저장하였고, 문자열을 순회하며 출현 빈도를 배열에 저장한다.
가장 많이 출현한 알파벳을 찾고, 동일한 빈도수가 있다면 ?를 출력할 수 있도록 한다.
++
for문
for (char c: arr) {
// 배열 arr의 각 요소 c에 대해 반복
}
문자와 정수간의 연산
문자 'A'의 ASCII 값은 65이므로, 'A'를 0으로 맞추기 위해서는 'A'를 빼준다
'A' - 0, 'B' -1, ..... 'Z' 25
풀이
import java.io.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
String word = sc.nextLine().toUpperCase();
int[] alpha = new int[26];
char[] arr = word.toCharArray();
for (char c : arr) {
if (c >= 'A' && c <= 'Z') {
alpha[c - 'A']++;
}
}
int maxCnt = 0;
char maxChar = '?';
boolean isDuplicated = false;
for (int i = 0; i < 26; i++) {
if (alpha[i] > maxCnt) {
maxCnt = alpha[i];
maxChar = (char) (i + 'A');
isDuplicated = false;
} else if (alpha[i] == maxCnt) {
isDuplicated = true;
}
}
if (isDuplicated) {
System.out.println('?');
} else {
System.out.println(maxChar);
}
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
| [백준/Java] 4949 균형잡힌 세상 (0) | 2025.03.30 |
|---|---|
| [백준/Java] 1541 잃어버린 괄호 (1) | 2025.03.26 |
| [백준/Java] 1152 단어의 개수 (1) | 2025.03.23 |
| [백준/Java] 1032 명령 프롬프트 (0) | 2025.03.23 |
| [백준/C++] 1008번 (0) | 2024.03.04 |