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 |