반응형
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]++; 되야함
*/
반응형
'웹 프로그래밍 기초 > 자바기반의 웹&앱 응용SW 개발자' 카테고리의 다른 글
코로나 휴강 대체할 t형의 복습문제6. (0) | 2020.03.04 |
---|---|
코로나 휴강 대체할 t형의 복습문제5. (0) | 2020.03.04 |
코로나 휴강 대체할 t형의 복습문제3. (0) | 2020.03.03 |
코로나 휴강 대체할 t형의 복습문제2. (0) | 2020.03.03 |
코로나 휴강 대체할 t형의 복습문제1. (0) | 2020.03.03 |
댓글