티스토리 뷰
문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
예제 입력
Mississipi
예제 출력
?
코드
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | package string; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.StringTokenizer; /** * https://www.acmicpc.net/problem/1157 * 단어 공부 * @author minjung * 아스키 코드 사용 */ public class baekjoon_1157 { private void solve(String word){ word = word.toLowerCase(); // 소문자로 변환 int[] ascii = new int[26]; // 입력받은 문자열 저장 for( int i = 0; i < word.length(); i++ ){ ascii[word.charAt(i) - 97]++; // 소문자 a는 97이므로 97을 빼면 a부터 차례대로 배열에 할당 } int max = 0; boolean isMany = false; // int result = 0; // 가장 많이 쓰인 알파벳의 아스키값 저장 for( int i = 0; i < 26; i++ ){ if ( max < ascii[i]) { result = i + 97; max = ascii[i]; isMany = false; } else if( max == ascii[i] ) { isMany = true; } } if( isMany ) { System.out.println("?"); } else { System.out.println((char)(result - 32)); // 아스키값을 대문자로 변환 후 출력 } } public static void main(String[] args) { // TODO Auto-generated method stub sc.init(); String word = sc.readLine(); new baekjoon_1157().solve(word); } static class sc { private static BufferedReader br; private static StringTokenizer st; static void init() { br = new BufferedReader(new InputStreamReader(System.in)); st = new StringTokenizer(""); } static String readLine() { try{ return br.readLine(); } catch (IOException e){ e.printStackTrace(); } return null; } static String next() { while (!st.hasMoreTokens() ){ try { st = new StringTokenizer(br.readLine()); } catch (IOException e){ e.printStackTrace(); } } return st.nextToken(); } static long nextLong() { return Long.parseLong(next()); } static int nextInt() { return Integer.parseInt(next()); } static double nextDouble() { return Double.parseDouble(next()); } } } | cs |
'Algorithm > Baekjoon Online Judge' 카테고리의 다른 글
[문자열 처리] BOJ_2902 KMP는 왜 KMP일까? (0) | 2017.03.09 |
---|---|
[문자열 처리] BOJ_1475 방 번호 (0) | 2017.03.08 |
[문자열 처리] BOJ_10988 팰린드롬인지 확인하기 (0) | 2017.03.06 |
[문자열 처리] BOJ_1032 명령 프롬프트 (0) | 2017.03.05 |
[문자열 처리] BOJ_2675 문자열 반복 (0) | 2017.03.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- onPostExecute
- 이클립스
- INSERT
- indexOf
- controller
- algorithm
- 안드로이드 스튜디오
- 예외처리
- boj
- Spring
- RequestMapping
- onBackPressed
- DP
- servlet
- java
- table
- AlertDialog.Builder
- DFS
- 안드로이드 비콘
- order by
- 자바
- jsp
- BFS
- restfb
- REDIRECT
- list
- Baekjoon Online Judege
- sort
- mybatis
- maven
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함