[백준 JAVA] 1157번 풀이 - 단어 공부
by mini_minpackage baekjoon;
import java.util.Scanner;
/**
* 단어 공부
* 알파벳 대소문자가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지
* 알아내는 프로그램을 작성한다.
* 대소문자는 구분하지 않는다!
* 1. 첫줄에 단어가 입력된다.
* 2. 가장 많이 사용된 알파벳을 대문자로 출력한다.
* 만약, 가장 많이 사용된 알파벳이 여러 개 존재하면 ?를 출력한다.
*
*/
public class _1157 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
s = s.toUpperCase();
int [] arr = new int[s.length()];
int [] count = new int[26];
for ( int i = 0; i < s.length(); i++ )
{
arr[i] = (char) (s.charAt(i)-65);
}
for ( int i = 0; i < arr.length; i++ )
{
count[arr[i]]++;
}
int max = -1;
boolean same = false;
int num = 0;
for ( int i = 0; i < count.length; i++ )
{
//System.out.println((char)(i+65) + "개수 " + count[i]);
if ( count[i] > max )
{
max = count[i];
num = i;
same = false;
}
else if ( max > 0 && max == count[i] )
{
same = true;
}
}
if ( same )
{
System.out.println("?");
}
else
{
System.out.println((char)(num+65));
}
sc.close();
}
}
풀이 방법
"아스키 코드" 라는 점을 활용해 알파벳의 count 개수를 세는 배열을 만들면 되겠다고 생각했다.
그래서 알파벳에 -65 한 값을 배열에 저장해서 count[arr[i]] 배열을 만들었고 개수를 저장했다.
그 이후에는 큰 값을 비교했고, 만약 max 가 1개 이상 + 그런데 max 값과 비교하는 값이 같은 경우가 있다면 same 을 true 로 변경했다. for 문이 끝날 때 까지 same = true 일 경우를 처리했다.
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 2501번 풀이 - 약수 구하기 (0) | 2023.07.04 |
---|---|
[백준 JAVA] 5086번 풀이 - 배수와 약수 (0) | 2023.07.03 |
[백준 JAVA] 10757번 풀이 - 큰 수 A+B (0) | 2023.06.28 |
[백준 JAVA] 2745번 풀이 - 진법 변환 ✨또 풀기 (0) | 2023.06.27 |
[백준 JAVA] 10988번 풀이 - 팰린드롬 확인하기 (0) | 2023.06.26 |
블로그의 정보
개발자 미니민의 개발로그
mini_min