▶ BufferedReader와 chatAt()을 활용한 간단한 문제가 있어 정리해보고자 합니다.
문제설명
입력 & 출력
나의 풀이
빠른 입력을 위해 BufferedReader 클래스를 사용했습니다.
먼저 대문자와 소문자를 구분하지 않는다고 했으니 toUpperCase() 메서드를 사용하여 입력받은 단어를 대문자로 만들어줍니다.
알파벳 A~Z를 넣기 위한 길이가 26인 배열 alphabet을 초기화해주고, 입력받은 단어를 chatAt() 메소드를 사용하여 각 요소에 접근하여 각 요소에 맞는 인덱스의 요소를 증가시켜 줍니다.
그러면 위와 같이 단어의 각 요소의 횟수가 나옵니다.
이때 65를 빼주는 이유는 아스키코드 문자 'A'가 10진수로 65이고, 문제에서 대문자와 소문자를 구분하지 않는다고 했으며 시작을 A로 잡았기 때문입니다.
그리고 단어의 각 요소의 횟수인 alphabet 배열을 순회하는 데 가장 많이 나온 알파벳을 찾아 max 변수에 저장해 주고, max값의 인덱스 i를 index 변수에 저장을 해줍니다.
그러면 가장 많이 등장하는 알파벳의 횟수 max와 그 요소의 인덱스가 저장되는 데 입력된 단어 중 가장 많이 사용된 알파벳이 여러 개가 존재하는 경우가 있기 때문에 이 를 처리해줘야 합니다.
위와 같은 경우를 처리하기 위해 28번째 줄에서 가장 많이 나온 알파벳을 체크해 줍니다.
만약 입력이 "Mississipi" 라면 i가 4번, s가 4번 나오기 때문에 두 가지의 경우에서 if문을 만족하여 cnt는 2가 될 것입니다.그러나 만약 입력이 "zZa" 라면 z가 1번 나오기 때문에 한 가지의 경우에서 if문을 만족하여 cnt는 1이 되어 중복이 없다는 것을 체크할 수 있습니다.
마지막으로 삼항연산자를 사용하여 cnt에 따라서 "?"와 알파벳 출력을 위한 char형으로 캐스팅하여 출력해 줍니다.
참고 ❗
[JAVA] 입출력, BufferedReader, StringTokenizer
Java로 코딩테스트를 보거나 입력을 사용해야 할 때 Scanner 클래스를 사용하면 편리하지만 속도가 느리다는 단점이 있습니다. 그렇기 때문에 속도가 빠른 BufferReader 클래스를 사용을 하면 시간복
pixx.tistory.com
[JAVA] char에서 String으로 변환하기 (value of() , charAt())
charAt() 란 ❓Java String 클래스에는 charAt()라는 메서드가 있습니다. charAt() 메서드는 문자열의 지정된 인덱스에 있는 문자(char)를 반환합니다. 문자열에서 원하는 문자(char)를 뽑을 때 자주 사용
pixx.tistory.com
'Coding Test > 백준' 카테고리의 다른 글
[백준] 소수 찾기 (BufferedReader, StringTokenizer, 1978번) (0) | 2024.05.21 |
---|---|
[백준] 평균은 넘겠지 (BufferedReader, 4344번, stream, StringTokenizer) (0) | 2024.05.21 |
[백준] 주사위 세개 (Java, 2480번, BufferedReader, Stream) (0) | 2024.05.19 |
[백준] 숫자의 개수 (Java, 2577번, BufferedReader, charAt()) (0) | 2024.05.19 |
[백준] 문자열 반복 (Java, 2675번, BufferedReader, StringBuilder) (0) | 2024.05.19 |