Algorithm
백준 1157번 JAVA (단어공부 알파벳 찾기)
Geon_Ho
2023. 3. 1. 18:22
문제해설
해당 문제는 다양한 방법을 종합해서 풀어보았다.
char 자료형을 다루었고, 반복문 및 중첩 반복문을 사용하고, 조건문, 배열에 대한 개념 등을 사용하였다.
해당 코드에 대한 설명은 주석으로 처리하였다.
결과코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputWord = br.readLine(); // 단어를 입력받고, 알파벳 인덱스 배열 만들기
int[] alpIndex = new int[26];
char uppercase = 'A'; // char 로 계산하며 알파벳 체크하기
char lowercase = 'a';
int max = 0;
int cnt = 0;
int result = 0;
for (int i = 0; i < 26; i++){ // 알파벳 각각 체크 (알파벳 개수만큼 반복)
for (int j = 0; j < inputWord.length(); j++){ // & 입력 단어의 각 자리마다 체크 (단어 길이만큼 반복)
if (uppercase == inputWord.charAt(j) || lowercase == inputWord.charAt(j)) {
alpIndex[i] += 1; // 걸리면 알파벳 배열 인덱스 값 +1 해주기
}
}
if (alpIndex[i] > max) { // 최대값 알아와서
max = alpIndex[i];
}
uppercase += 1; // char 자료형의 특성 활용
lowercase += 1;
}
for (int i = 0; i < 26; i++){ // 배열에서 찾기 (반복문으로 돌려서 최대 등장횟수와 같은 것 cnt 반영)
if (max == alpIndex[i]) { // 만약 cnt 1이면 해당 알파벳 출력하고
cnt++;
if (cnt == 2){ // 2가 되는 순간 break 걸어서 ? 출력
System.out.println("?");
break;
}
result = i;
}
}
if (cnt == 1) {
System.out.println((char)('A' + result));
}
}
}
배운점
자료형 char의 연산에 대하여 알 수 있었고, 자료형 변환 등을 좀 더 잘 활용할 수 있게 되었다.
» 제가 작성한 글의 내용중 잘못된 부분 및 수정해야 할 사항이 있으면 댓글로 말씀부탁드립니다.
확인 후 다시 공부하여 수정하도록 하겠습니다. 끝까지 읽어주셔서 감사합니다 !! 😀