티스토리 뷰

알고리즘

백준 #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'를 하면 해결되는 간단한 방법이 있어 신기했다!

'알고리즘' 카테고리의 다른 글

백준 #9020 java 2023.01.30  (2) 2023.01.30
백준 #2587 java 2023.01.30  (0) 2023.01.30
백준 #5597 java 2023.01.29  (0) 2023.01.29
백준 #2750 java 2023.01.26  (0) 2023.01.26
백준 #4948 java 2023.01.26  (0) 2023.01.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함