반응형
접근 방법)
이 문제는 몇 가지 순서를 밟아가며 풀어나가야 한다.
첫 번째로는 입력 값을 모두 toUpperCase()를 이용해 모두 대문자로 만들어준다.
두 번째로 알파벳 배열 [26]를 생성한 후 입력받은 문자열 길이만큼 for문을 반복한다.
for문 안에서는 입력값을 하나씩 알파벳 문자 - 'A'로 인덱스 번호로 바꿔준 후, 인덱스 번호에 맞는 배열에 값을 1씩 더해준다.
마지막으로 알파벳 배열 크기만큼 for문을 반복하여 배열 값이 가장 큰 값을 max로 잡고 max일 때 해당 알파벳을 출력하고, max가 같은 값이 존재할 경우 ?를 출력하게 작성한다.
정답 코드 1)
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.next().toUpperCase();
int[] alphabet = new int[26]; // 알파벳 A~Z 까지 배열
for(int i = 0; i < str.length(); i++){
int num = str.charAt(i) - 'A'; // 알파벳에 맞는 인덱스 번호 생성
alphabet[num]++; // num 번호에 해당하는 알파벳이 있을 때마다 1씩 추가
}
int max = 0; // 가장 많이 등장한 알파벳 횟수
char answer = '?'; // 출력할 결과 값
for(int j = 0; j < alphabet.length; j++){
if(alphabet[j] > max){ // max일 때
max = alphabet[j];
answer = (char) (j+'A'); // max일 때 출력할 값도 answer에 저장
}else if(alphabet[j] == max){ // max가 중복일 때
answer = '?';
}
}
System.out.print(answer);
}
}
처음에는 입력받은 문자열 크기만큼 for문 하나로만 어떻게 해보려다가 실패하였다.
알파벳 A~Z의 배열을 이용해 알파벳이 등장한 횟수만큼 알파벳 배열에 담고, 이 알파벳 배열을 이용하여 문제를 풀 수 있다는 것을 알아내고 쉽게 문제가 풀렸다.
반응형
'Baekjoon 자바 코드 > 심화1' 카테고리의 다른 글
[백준] 1316번 그룹 단어 체커 풀이 코드 (Java 자바) (0) | 2024.05.08 |
---|---|
[백준] 2941번 크로아티아 알파벳 풀이 코드 (Java 자바) (0) | 2024.05.02 |
[백준] 10988번 팰린드롬인지 확인하기 풀이 코드 (Java 자바) (0) | 2024.04.24 |
[백준] 2444번 별 찍기 - 7 풀이 코드 (Java 자바) (0) | 2024.04.23 |
[백준] 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰 풀이 코드 (Java 자바) (0) | 2024.04.22 |