반응형
https://www.acmicpc.net/problem/1157
문제해설
단어가 주어지면 단어에서 가장 많이 사용된 알파벳의 갯수를 구하는 문제입니다.(대소문자 구분 X)
단, 가장 많이 사용된 알파벳이 여러개일 경우에는 ? 출력
예제로 입력 받은 문자열의 길이만큼 반복문을 돌며 사용된 알파벳을 카운트 시켜준다.
카운트 시켜주는 방법은 아스키 코드를 사용한다.
예를 들어 A를 카운트 한다고 하면 배열에서 arr['A' - 65] 라고 하면 A가 아스키 코드로 65이기 때문에
int 배열의 0번째가 카운트 되는 것이다.
해결방법
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int arr[] = new int[26]; //알파벳의 갯수만큼 배열 선언
String word = br.readLine().toUpperCase(); // 입력 받은 문자열을 대문자로 변경
int max = -1;
char answer = '?';
for(int i = 0 ; i < word.length() ; i++) { // 문자열의 길이만큼 반복
arr[word.charAt(i) - 65]++; // 해당 알파벳을 카운트
}
for(int i = 0; i < arr.length; i++) { // 알파벳의 갯수만큼 반복(최대값을 구하기 위함)
if(max < arr[i]) { // 최대값 보다 크다면
max = arr[i];
answer = (char)(i+'A');
} else if (max == arr[i]) { // 최대값과 같다면
answer = '?';
} // else 는 써주지 않는다. 왜냐하면 작은 값은 필요 없기 때문
}
bw.write(answer);
br.close();
bw.flush();
bw.close();
}
}
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준 알고리즘][자바] 2908번 : 상수 (0) | 2021.06.05 |
---|---|
[백준 알고리즘][자바] 1152번 : 단어의 개수 (0) | 2021.05.12 |
[백준 알고리즘][자바] 10890번 : 알파벳 찾기 (0) | 2021.03.10 |
[백준 알고리즘][자바] 11720번 : 숫자의 합 (0) | 2021.03.05 |
[백준 알고리즘][자바] 4344번 : 평균은 넘겠지 (0) | 2021.03.04 |
댓글