[백준풀이] 백준1157 단어 안의 알파벳 찾기?

SeoYehJoon·2023년 9월 7일
0

맨 밑에 전체 코드 있음



핵심 아이디어 위주로 소개하겠다.


일단 대소문자 모두 세어야 하니 위와같이 3개의 배열을 선언한다.

  • 각 대문자 알파벳의 갯수를 담는 배열
  • 각 소문자 알파벳의 갯수를 담는 배열
  • 대소문자 알파벳의 갯수를 담는 배열( alpa_B + alpa_S = alpa_BS )






대문자 알파벳을 세는 코드와 소문자 알파벳을 세는 코드 구현
(대문자는 65 소문자는 97빼주면 된다)밑의 ASCII코드 참조






대소문자 구분없이 같이 취급해야하니 alpa_BS에 합쳐주고
제일 많이 나온 알파벳과 인덱스를 구한다





최대로 많이나온 값이 2개 이상 있으면 ? 출력하게 구현해야한다.





내가 구현한 코드 공유
package baek_1157;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Count_word 
{
	public static void main(String[] args) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String temp = br.readLine();
		
		int[] alpa_B = new int[26];
		int[] alpa_S = new int[26];
		int[] alpa_BS = new int[26];
		
		for(int i=0 ; i<temp.length() ; i++)
		{
			int idx = temp.charAt(i);
			
			if(idx>='A' && idx<='Z')
			{
				alpa_B[idx-65]++;
			}
			else if(idx>='a' && idx<='z') 
			{
				alpa_S[idx-97]++;
			}
		}
		
		int many=0;
		int many_idx=0;
		for(int i=0;i<26;i++)
		{
			alpa_BS[i] = alpa_B[i] + alpa_S[i];
		}
		for(int i=0;i<26;i++)
		{
			if(alpa_BS[i]>many)
			{
				many = alpa_BS[i];
				many_idx = i;
			}
		}
		
		int count=0;
		for(int i=0;i<26;i++)
		{
			if(many == alpa_BS[i])
			{
				count++;
			}
		}
		
		if(count==1)
		{
			System.out.print((char)(many_idx+65));
		}
		else if(count > 1)
		{
			System.out.print("?");
		}
		
	}
}
profile
책, 블로그 내용을 그대로 재정리하는 것은 가장 효율적인 시간 낭비 방법이다. 벨로그에 글을 쓸때는 직접 문제를 해결한 과정을 스크린샷을 이용해 정리하거나, 개념을 정리할때는 최소2,3개소스에서 이해한 지식을 정리한다.

0개의 댓글