https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
알파벳 크기의 배열을 생성하고
배열원소를 증가시켜서 그 배열을 순회하여 가장 높은 수의 해당배열을 출력하는 식으로 풀 수 있다.
입력받은 문자열에서 대문자와 소문자를 구별하여 배열의 인덱스 값을 구하느냐,
애초에 입력받은 문자열을 대문자로 통일시켜서 구하느냐로 풀 수도 있다.
방법1. for문으로 대소문자 체크 'a' 'z'
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String S = br.readLine();
int[] arr = new int[26];
for(int i=0;i<S.length();i++) {
if('a'<=S.charAt(i) && S.charAt(i) <= 'z') {
arr[S.charAt(i)-97]++;
}else {
arr[S.charAt(i)-65]++;
}
}
int max=-1;
char ch='?';
for(int i=0;i<26;i++) {
if(arr[i]>max) {
max=arr[i];
ch = (char)(i+65); //값-65해서 인덱스를 구했으니 역으로 인덱스+65
}else if(arr[i]==max) {
ch='?';
}
}
System.out.println(ch);
}
}
방법2. toUpperCase() 대문자로 변경
package s07_string;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class MJ_05_1157_2 {
public static void main(String[] args) throws IOException{
//알파벳 26개
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String S = br.readLine();
S = S.toUpperCase();
int[] arr = new int[26];
for(int i=0;i<S.length();i++) {
arr[S.charAt(i)-65]++;
// arr[S.charAt(i)-'A']++;
}
//대문자아스키코드: 65~90 / 소문자아스키코드: 97~122
//대문자A(65)를 입력받으면 arr의 인덱스값0는 65-x = 0, x=65
//대문자C(67)를 입력받으면 arr의 인덱스값2는 67-x = 2, x=65
//x값 65를 빼주면 arr의 인덱스값을 알 수 있어서 해당인덱스값을 1++해서 카운트가능
}
//S의 값을 모두 검사 후 카운트 했고
//가장 큰값의 인덱스의 문자 출력(큰값이 여러개면 ?출력)
int max=-1; //보통 관행상 음수로 표기
char ch='?';
for(int i=0;i<26;i++) {
//배열의 값이 max보다 크면 그값이 max
if(arr[i]>max) {
max=arr[i];
ch = (char)(i+65); //값-65해서 인덱스를 구했으니 역으로 인덱스+65
}else if(arr[i]==max) {
ch='?';
}
}
System.out.println(ch);
}
}
'ONLINE JUDGE > 문자열' 카테고리의 다른 글
[백준2908] 상수 (0) | 2022.03.11 |
---|---|
[백준1152] 단어의 개수 (0) | 2022.03.11 |
[백준2675] 문자열 반복 (0) | 2022.03.09 |
[백준10809] 알파벳 찾기 (0) | 2022.03.08 |
[백준11720] 숫자의 합 (0) | 2022.03.05 |
댓글