안녕하세요 저번 포스팅에 이어서 이번에도 문자열 처리관련 문제를 들고왔습니다.
https://www.acmicpc.net/problem/1371
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
라는 문제인데요
전 이번 문제를 풀이할때는 가장많이 사용된 알파벳을 카운트 하기위해 알파벳의 갯수와 같은 크기의
int 형 배열을 만들었습니다.
그다음에는 카운트가 저장될 int형 변수 max를 선언하고
Sacnner의 .hasNextLine()함수를 이용해 입력을 받았습니다.
그뒤에는 라인단위로 입력을받아
res[(int)(tmp.charAt(i)-'a')]++; 라는 부분을 통해서 아스키 코드값을 이용해 해당하는 인덱스의 값을 증가시키고
해당하는 인덱스의 값과 앞에서 선언한 최대 출현갯수인 max와 비교하는 부분을 추가해 최대값을 저장시켰습니다.
그이후엔 for문을 통해 res[]배열안에서 max와 같은 값을 가지고있는 인덱스를
(char)(i+'a')를 통해 다시 알파벳으로 바꾸어 출력시키는 방식으로 프로그램을 작성했습니다.
다만 문제가 있다면 로컬에서 해당 소스를 돌렸을때 EOF처리를 하지못해 결과를 볼수 없었는데요
결국 이대로 작성해서 제출을 했습니다. ㅠㅠ
다행이 백준 온라인저지에서는 알아서 EOF문제를 해결해주네용