728x90
https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
● 문제
단어를 입력받고 해당 단어들의 알파벳의 아스키코드를 비교해 가장 많이 출력된 알파벳을 구하는 문제이다.
● 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String aString = s.nextLine().toUpperCase();
int cnt[] = new int[26];
int max = 0;
char result = 'c';
int index;
for(int i = 0; i < aString.length(); i++)
{
index = aString.charAt(i) - 65;
cnt[index]++;
if(max < cnt[index]) {
max = cnt[index];
result = aString.charAt(i);
}
else if(max == cnt[index])
result = '?';
}
System.out.println(result);
s.close();
}
}
먼저 단어를 입력받은 뒤 toUpperCase()를 통해 단어들을 대문자로 바꿔준다.
이는 대문자와 소문자의 아스키코드가 달라 어차피 출력할때는 대문자로 출력하기때문에 모두 대문자로 바꿔 알파벳의 갯수를 카운팅 해준다.
다음으로는 입력받은 단어에서 65를 빼 index에 넣어준다.
아스키코드 대문자는 A(65)부터 이므로 65를 빼주게 된다면 0~25까지의 숫자가 나오게된다.
이를 이용하여 cnt배열에 넣어주어 갯수를 비교하게 된다.
이후에는 최댓값을 구하는 코드를 통해 result에 charAt을 이용하여 가장 많이 나온 단어를 넣어주게된다.
만약 max의 값과 cnt[index]의 값이 같을 경우 "?"를 출력하게 된다.
● 참고사항
- 아스키코드
728x90
'Study > BaekJoon' 카테고리의 다른 글
[백준 자바JAVA] 10250번 - ACM호텔 (0) | 2023.03.04 |
---|---|
[백준 자바JAVA] 4153번 - 직각삼각형 (0) | 2023.02.24 |
[백준 자바JAVA] 1085번 - 직사각형에서 탈출 (0) | 2023.02.24 |
[백준 자바JAVA] 1264번 - 모음의 개수 (0) | 2023.02.12 |
[백준 자바JAVA] 1552번 - 단어의 개수 (0) | 2022.12.26 |