알고리즘

백준 #1157 java 2023.01.29

chaewonni 2023. 1. 29. 23:52

단어 공부 문제!

 

package boj_basic.step6;

import java.util.Scanner;

public class Q1157 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		String s = sc.next();
		
		int[] arr = new int[26];

		for(int i = 0; i<26; i++) {
			for(int j = 0; j<s.length(); j++) {
				if(Character.isUpperCase(s.charAt(j)))
					if(Character.toLowerCase(s.charAt(j))-'a'==i) {
						arr[i]++;
					}
				else if(s.charAt(j)-'a'==i) {
					arr[i]++;
				}
			}
		}
		
		int max = -1;
		for(int i = 0; i<26; i++) {
			if(max < arr[i]) 
				max = i;	
		}
		System.out.println(max);
		System.out.println(Character.toUpperCase((char)(max+97)));
	}

}

맨 처음에 썼던 코드는 이러하다... 뭔가 되게 놓친 부분이 많아 오류가 생긴다.

 

package boj_basic.step6;

import java.util.Scanner;

public class Q1157_2 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		String s = sc.next();
		
		int arr[] = new int[26];
		
		for(int i = 0; i<s.length(); i++) {
			if('A' <= s.charAt(i) && s.charAt(i) <= 'Z')
				arr[s.charAt(i)-'A']++;
			else
				arr[s.charAt(i)-'a']++;
		}
		int max = -1;
		char ch = '?';
		
		for(int i = 0; i<26; i++) {
			if(arr[i]>max) {
				max = arr[i];
				ch = (char) (i + 65);
			}
			else if(arr[i] == max)
				ch = '?';
		}
		System.out.println(ch);

	}

}

 

나중에 수정한 최종 코드는 이러하다!

 

이 문제를 통해 char은 아스키코드값 때문에 어떻게 사용해야 할지 잘 몰랐는데 -'A' / -'a'를 하면 해결되는 간단한 방법이 있어 신기했다!