perry05

[백준] 1157 - 단어 공부(JAVA) 본문

문제풀이 기록/JAVA

[백준] 1157 - 단어 공부(JAVA)

perry05 2022. 11. 27. 18:36

[백준] 단계별로 풀어보기 - 문자열

https://www.acmicpc.net/problem/1157

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

 

> 문제

 

> 풀이

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));
		int max = 0;
		int[] cnt = new int['Z'-'A'+1];
		char A = 'A';
		String in;
		StringBuilder out = new StringBuilder();
		
		// 문자열 입력 받기
		in = br.readLine().toUpperCase();
		br.close();
		
		// 문자열에서 나온 알파벳(A-Z) 개수 세면서 가장 큰 값 구하기
		for(int i = 0; i < in.length(); i++) {
			int count = ++cnt[in.charAt(i)-A];
			if(max < count) max = count;
		}
		
		// 가장 많이 나온 알파벳을 out에 넣기
		for(int i = 0; i < cnt.length; i++) {
			if(max == cnt[i])
				out.append((char)(A+i));
		}
		
		// out길이가 1보다 크면 가장 많이 나온 문자가 여러개라는 뜻이기 때문에 ?출력, 아니면 out 출력
		if(out.length()>1)
			System.out.println("?");
		else
			System.out.println(out);
	}
}

- 대소문자 구별 안함 / 출력은 대문자로 출력 -> toUpperCase()사용
- max값 구한 후 max로 비교하여 가장 많이 나온 알파벳 구하기.

Comments