본문 바로가기

Study/BEAKJOON Algorithm

7단계 문자열

1. 단어 공부 (문제 번호 : 1157)

 

문제 :

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

 

입력 :

첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.

 

출력 :

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

import java.util.*;

public class Main {
	public static void main(String[] args) {
		int alpabet[] = new int[26];	// 알파벳(0~25)을 담을 배열
		
		Scanner scan = new Scanner(System.in);
		String s = scan.next().toUpperCase();	// 문자를 모두 대문자로 취급
		
		int max = 0;	// 가장 많이 나오는 알파벳을 찾기위한 변수
		int index = 0;	
		char answer = '?';
		
		for (int i = 0; i < s.length(); i++) {
			index = s.charAt(i) - 65;	// ascii 코드의 A = 65 / Z = 90
			alpabet[index] += 1;	
			
			if(max < alpabet[index]) {
				answer = s.charAt(i);
				max = alpabet[index];
			} else if (max == alpabet[index]) {
				answer = '?';
			}
		}
		System.out.println(answer);
	}
}

 

 

2. 단어의 개수 (문제 번호 : 1152)

 

문제 :

영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.

 

입력 :

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다.

 

출력 :

첫째 줄에 단어의 개수를 출력한다.

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		String sentence = scan.nextLine();		// 입력
		String sentenceTrim = sentence.trim();	// 앞 뒤 공백 제거
		
		String[] word = sentenceTrim.split(" ");	// " "에 해당하는 문자열을 자름
		
		if(sentence.equals(" ")) {
			System.out.println(0);
		} else {
		System.out.println(word.length);
		}
	}
}

 

 

 

 

'Study > BEAKJOON Algorithm' 카테고리의 다른 글

10단계 수학 2  (0) 2020.01.08
9단계 수학 1  (0) 2020.01.07
6단계 함수  (0) 2019.12.30
5단계 1차원 배열  (0) 2019.12.26
4단계 while문  (0) 2019.12.20