곽로그

[백준 1157] 단어공부 - 다시 본문

알고리즘/백준

[백준 1157] 단어공부 - 다시

일도이동 2020. 3. 1. 21:03
반응형

1. 문제

 

1157번: 단어 공부

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

www.acmicpc.net

2. 코드

1) 처음 푼 풀이


import java.util.Scanner;

public class Main {
	public static int findMax(int[] array) {
		int max = 0;
		for(int i=0; i<array.length;i++) {
			if(array[i]>=max) {
				max = array[i];
			}
		}
		return max;
	}
	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String word = in.next();
		int[] countLetter = new int[26];
		
		//문자열을 모두 대문자로 변환
		word=word.toUpperCase();
				
		//알파벳을 배열의 index에 대응하기 위해 대문자 알파벳의 아스키 코드에서 65를 뺀다
		for(int i=0;i<word.length();i++) {
			int letterIndex = (int)word.charAt(i) -65;
			countLetter[letterIndex] ++;
		}
		
		//max값을 찾은 후, 한번 더 순회하여 max값이 2개 이상이면 ?를 출력하고
		// 아닌경우에는 최댓값이 있는 배열의 인덱스에 +65를 하여 char로 출력한다. 
		int max = findMax(countLetter);
		int index =0;
		int countMax =0;
		for(int i= 0; i<countLetter.length;i++) {
			if(countLetter[i]==max) {
				index = i;
				countMax++;
			}
		}
		if(countMax>1) {
			System.out.println("?");
		}
		else {
			System.out.println((char)(index+65));
		}
		
	}
}

2. 조건문을 하나로

반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준 2231 자바] 분해합  (0) 2020.03.03
[백준 7568] 덩치  (0) 2020.03.02
[백준 2675] 문자열 반복  (0) 2020.03.01
[백준 11729] 하노이의 탑  (0) 2020.02.26
[백준 2477] 별찍기 -10  (0) 2020.02.26
Comments