오늘은 문자열 문제인 단어 공부를 정리해보려 합니다.
요새 코테 문제중에 문자열 관련 문제들이 좀 보이더라고요
그래서 문자 열중에 좀 재밌어 보이는 문제를 가져와봤습니다.
문제는
https://www.acmicpc.net/problem/1157
여기서 확인하시면 됩니다.
문제풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] a = new int[26];
String s = sc.nextLine().toUpperCase();
int max = 0;
char c = 'a';
for(int i =0; i < s.length(); i++) {
a[s.charAt(i) - 65]++;
if (max < a[s.charAt(i) - 65]) {
max = a[s.charAt(i) - 65];
c = s.charAt(i);
} else if(max == a[s.charAt(i) - 65]){
c = '?';
}
}
System.out.println(c);
}
}
이번 문제의 핵심은 for문을 돌릴 때 어떤 문자의 출연 빈도수에 따라 인덱스의 값을 증가시켜 그 문자열을 출력해줘야 한다는 것입니다.
이때 출력은 대문자로 해야 되므로 일부러 toUpperCase()를 사용해서 문제를 풀었습니다.
먼저 알파벳은 26자이므로 int[26]을 사용해서 배열을 만든다
문자열 하나하나 개수를 비교해야 하므로 charAt을 사용해 String을 Char로 바꿔준다.
for문이 돌 때마다 a배열의 인덱스를 +1 해줘서 끝날 때까지 모든 문자를 비교하게 해 줍니다.
max라는 변수를 설정해 가장 많이 사용된 알파벳을 카운트해줍니다.
c는 문자열로 선언해주고 s.charAt(i)를 이용하여 가장 많이 사용된 알파벳을 추출합니다.
만약 max가 여러 개 존재할 경우는 ?를 출력해줍니다.
'Algorithm > Baekjoon' 카테고리의 다른 글
[Baekjoon] 백준 1546 평균 - java (0) | 2021.07.18 |
---|---|
[Baekjoon] 백준 10951 (A + B - 4) - java (0) | 2021.07.15 |
[Baekjoon] 백준 1110 더하기 사이클 - java (0) | 2021.07.11 |
[Baekjoon] 백준 10871 X보다 작은 수 - java (0) | 2021.07.10 |
[Baekjoon] 백준 2884 알람시계 - java (2) | 2021.07.02 |