본문 바로가기
웹 프로그래밍 기초/자바기반의 웹&앱 응용SW 개발자

코로나 휴강 대체할 t형의 복습문제4.

by oncerun 2020. 3. 3.
반응형

4. 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이
무엇인지 알아내는 프로그램을 작성하기. 단, 대문자와 소문자를 구분하지 않습니다.
가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력합니다

입력값1 Mississipi (s:4개 , i:4개) 입력값2 zZa 
출력값1 ? 출력값2 Z

 

 

 

 배열과 아스키코드를 사용해야함. 65는'A'

charAt (문장중에 인덱스 위치에 해당되는 문자 추출하기)
toUpperCase() (문자열을 대문자로 바꿔준다.) 

 

추가: 알파벳은 26개이다.

package javaExample1;

import java.util.Scanner;

public class corona4 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("단어를 입력해주세요");
		String words = scan.next().toUpperCase();
		int arr[] = new int[26]; // 알파벳 26개
		int count = 0;
		int position = 0;
		// 카운팅
		for (int i = 0; i < words.length(); i++) {
			char word = words.charAt(i); // 한개씩뽑아서 char자료형인 변수에 넣고
			arr[word - 65]++; // 65~90 A~Z 0 =A 26=Z
		}
		int max = 0;
		// 최대로 많이나온 알파벳 찾기
		for (int j = 0; j < arr.length; j++) {
			if (max < arr[j]) {
				max = arr[j];
			}
		}

		// 중복되는최대값 찾기.
		// 근데 출력할때 뭐가 최대값인지 알아야함.
		// 반복문을 돌면서 배열의최대값이 중복되는지 알아봄
		for (int k = 0; k < arr.length; k++) {
			if (max == arr[k]) {
				position = k; // max값이랑 같을때마다 변수count에 값을증가시켜 1개 이상일때 ?를 출력하도록하자
				count++; // 중복된 횟수
								// 만약하나라면 그 배열[k]인덱스의 값을 저장해서 출력해야함
			}
		}
			if (count > 1) {
				System.out.println("?");
			} else
				System.out.printf("%c", (char)position + 65);  //position에 -65된 숫자가들어가있음 따라서 
								//얻은 positon값에 65를 더해야함.
		

	}
}

/*
 * a를 입력받으면 65빼서 array[0]++; 되야함
 */
반응형

댓글