문제 링크
주의사항
- JAVA를 사용하여 프로그램을 사용하였습니다.
- 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{
public static void main(String[] args){
}
}
문제 설명
접근 방법
- BufferedReader를 사용하여 입력값을 저장합니다.
- for문을 통해서 알파벳 반복횟수를 배열에 저장한다.
- 알파벳 소문자는 아스키코드 97부터 시작하며 대문자는 65부터 시작하므로 65와 97을 빼주었습니다.
- 횟수가 중복되면 다른 결과를 출력해야하기 때문에 확인 변수와 최대값, 최대값 인덱스를 만들었습니다.
- for문을 통해서 배열에 가장 큰 값과 인덱스를 찾았습니다.
- 그 결과를 대문자 알파벳으로 표현하기 때문에 최대값 인덱스에 65를 더하였습니다.
- 결과를 최대값이 중복되었는지에 따라 bw에 저장하였습니다.
- BufferedWriter을 통하여 한 번에 출력하였습니다.
결과 코드
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//입력 값을 받는 BufferedReader
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//결과를 출력하는 BufferedWriter
String text = br.readLine(); //입력값 저장
int[] arr = new int[26]; //알파벳 반복 횟수 배열
for(int i=0;i<text.length();i++){ //알파벳 반복 횟수 배열에 저장
int temp = text.charAt(i);
if(temp<97){
temp = temp-65;
}else{
temp = temp-97;}
arr[temp]++;
}
int max=-1, maxindex=-1; //최대값 관련 변수
boolean check=false; //max 값이 중복된 값인지 확인하는 변수
for(int i=0;i<arr.length;i++){ //반복 횟수 최대값 구하기
if(arr[i]>max){
max = arr[i];
maxindex = i;
check = false;
}else if(arr[i]==max){
check = true;
}
}
char result = (char)(maxindex + 65); //최대값 char형으로 변환
if(check){ //결과 bw에 저장
bw.write("?\n");
}else{
bw.write(result+"\n");
}
bw.flush(); //결과 출력
bw.close();
br.close();
}
}
'백준' 카테고리의 다른 글
[백준] 단계별로 풀어보기(단계:7,문자열,JAVA)2908번, 상수 (0) | 2021.12.22 |
---|---|
[백준] 단계별로 풀어보기(단계:7,문자열,JAVA)1152번, 단어의 개수 (0) | 2021.12.20 |
[백준] 단계별로 풀어보기(단계:7,문자열,JAVA)2675번, 문자열 반복 (0) | 2021.12.19 |
[백준] 단계별로 풀어보기(단계:7,문자열,JAVA)10809번, 알파벳 찾기 (0) | 2021.12.19 |
[백준] 단계별로 풀어보기(단계:7,문자열,JAVA)11720번, 숫자의 합 (0) | 2021.12.18 |
댓글