본문 바로가기
코딩테스트 연습

[JAVA] 1157번 단어공부 문제!!

by HANdeveloper 2023. 10. 23.

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {

    	// 문제풀기 전 알아야하는 것!!
    	// A ~ Z 65 ~ 90
    	// a ~ z 97 ~ 122
    	
    	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']++; // A 대신 65를 빼도 무방  / 해당 인덱스값 1증가
    		}else { // 소문자 범위
    			arr[s.charAt(i)-'a']++; // a 대신 97을 빼도 무방  / 해당 인덱스값 1감소
    		}
    	}
    	
    	int max = -1;
    	char ch = '?';
    	
    	
    	for(int i=0;i<26;i++) {
    		if(max<arr[i]) {
    			max = arr[i];
    			ch = (char)(i+65); // 대문자로 출력해야하므로 65를 더해줌
    			
    		} else if (max == arr[i]) {
    			ch = '?';
    		}
    	}
    	System.out.println(ch);
    	
        }
    
    }

int 를 char 에 넣을 경우 반드시 (char)을 붙여 캐스팅을 해주어야함!!

 

arr 안에 대문자 알파벳 개수만큼 담아줌!!

해당 문제는 대소문자 구분이 없이 카운팅되며, 대문자로 출력해야함!

 

해당 arr에 알파벳을 담았다고 생각하고 해당 알파벳 순서에 ++카운팅을 하는 개념!

그래서 수가 가장 많은 알파벳을 출력한다고 생각하면 된다 :) (아래이미지 참고)

해당 알파벳 위치가 카운팅되도록 함!!!

 

대문자의 경우

s.charAt(i) 으로 해당 인덱스의 값을 불러와 -65 또는 -'A'를 해주도록 함

ex) D인 경우 arr 번호는 3번이 나와야하므로 D의 값인 68에서 65를 빼 3을 반환하도록 함

     그렇게 되면 3번 인덱스가 카운팅됨!

 

소문자의 경우에는 -97 또는 -'a'를 해주도록 함

'코딩테스트 연습' 카테고리의 다른 글

[JAVA] 1316번 그룹 단어 체커  (0) 2023.10.24
[JAVA] 백준 3052 나머지  (0) 2023.10.17
[백준] 1008번 문제 A/B - java  (0) 2022.10.27

댓글