Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 백준 2738
- 백준 2292
- 2941
- 백준 1193
- 1157
- 백준 2750
- 프로그래머스
- 백준 1712
- 백준 1316
- 백준 2563
- 백준 11653
- 백준 2581
- 백준 1264
- 백준
- 백준 1547
- 백준 9020
- C
- 백준 10757
- 백준 - 1371
- 수박수박수박수박수박수?
- 백준 1978
- 백준 2775
- 백준 2587
- 백준 2839
- Java
- 백준2869
- 백준 1929
- 백준 10250
- 백준 2566
- 자바
Archives
- Today
- Total
perry05
[백준] 1157 - 단어 공부(JAVA) 본문
[백준] 단계별로 풀어보기 - 문자열
https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
> 문제

> 풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int max = 0;
int[] cnt = new int['Z'-'A'+1];
char A = 'A';
String in;
StringBuilder out = new StringBuilder();
// 문자열 입력 받기
in = br.readLine().toUpperCase();
br.close();
// 문자열에서 나온 알파벳(A-Z) 개수 세면서 가장 큰 값 구하기
for(int i = 0; i < in.length(); i++) {
int count = ++cnt[in.charAt(i)-A];
if(max < count) max = count;
}
// 가장 많이 나온 알파벳을 out에 넣기
for(int i = 0; i < cnt.length; i++) {
if(max == cnt[i])
out.append((char)(A+i));
}
// out길이가 1보다 크면 가장 많이 나온 문자가 여러개라는 뜻이기 때문에 ?출력, 아니면 out 출력
if(out.length()>1)
System.out.println("?");
else
System.out.println(out);
}
}
- 대소문자 구별 안함 / 출력은 대문자로 출력 -> toUpperCase()사용
- max값 구한 후 max로 비교하여 가장 많이 나온 알파벳 구하기.
'문제풀이 기록 > JAVA' 카테고리의 다른 글
| [백준] 2908 - 상수(JAVA) (0) | 2022.11.28 |
|---|---|
| [백준] 1152 - 단어의 개수(JAVA) (0) | 2022.11.28 |
| [백준] 2675 - 문자열 반복(JAVA) (0) | 2022.11.27 |
| [백준] 10809 - 알파벳 찾기(JAVA) (0) | 2022.11.27 |
| [백준] 11720 - 숫자의 합(JAVA) (0) | 2022.11.27 |
Comments