▶ BufferedReader, BufferedWriter, StringBuilder를 활용한 간단한 문제가 있어 정리해보고자 합니다.
문제설명
입력 & 출력
나의 풀이
이번에도 문제를 보자마자 charAt() 메서드를 활용해야겠다고 생각했습니다.
먼저 빠른 입력을 위해 BufferedReader를 사용해 주었습니다.
S에 입력을 받아주고, Arrays.fill() 메서드를 사용하여 alphabet 배열에 "-1"을 모두 넣어주었습니다.
그러면 길이가 26인 문자열 배열 alphabet에 "-1"이 저장됩니다.
그리고 반복문을 사용하여 입력받은 문자열 S에 접근해 주는 데, a가 0번째, b가 1번째에 위치한다고 했고, 문제에서 a~z까지 소문자만 입력이 가능하기 때문에 왼쪽 그림처럼 문자 'a'의 10진수인 97을 빼줬습니다.
charAt() 메서드와 indexOf() 메서드를 사용하여 각 알파벳에 맞는 인덱스를 alphabet요소에 넣어주고 마지막으로 String.jon() 메서드를 사용하여 배열을 문자열로 연결하여 마무리해주었습니다.
다른 풀이 ✅
"다른 풀이"에서는 BufferedReader와 BufferedWriter, StringBuilder를 사용했습니다.
12번째 줄에서 반복문의 초기값과 조건식을 a~z로 하여 "나의 풀이"에서 알파벳의 10진수 값을 구하는 단계를 생략할 수 있습니다.
그리고 indexOf() 메서드를 사용하여 a~z에 해당하는 알파벳이 S에 존재하면 해당 index를 넣어주고 없으면 자동으로 -1이 반환되기 때문에 "나의 풀이"에서 fill() 메서드를 사용할 필요가 없었습니다.
메서드의 정확한 반환값을 알았더라면 좀 더 간결하게 풀 수 있는 문제였습니다.
참고 ❗
'Coding Test > 백준' 카테고리의 다른 글
[백준] 숫자의 개수 (Java, 2577번, BufferedReader, charAt()) (0) | 2024.05.19 |
---|---|
[백준] 문자열 반복 (Java, 2675번, BufferedReader, StringBuilder) (0) | 2024.05.19 |
[백준] 더하기 사이클 (Java, 1110번, BuffuredReader) (0) | 2024.05.18 |
[백준] 빠른 A+B (Java, 15552번, BufferedReader) (0) | 2024.05.16 |
[백준] 킹, 퀸, 룩, 비숍, 나이트, 폰 (Java, 3003번, BufferedReader) (0) | 2024.05.12 |