▶ BufferedReader & StringTokenizer &ArrayList를 활용한 간단한 문제가 있어 정리해보고자 합니다.
문제설명
입력 & 출력
나의 풀이
이번 문제는 정말 간단한 N의 약수를 구하고 그 약수들 중에서 K번째 요소를 출력하는 문제입니다.
N의 약수들을 미리 알지 못하기 때문에 보통의 배열을 사용하려면 다른 작업이 필요합니다. 따라서 Java에서는 동적 배열을 사용하려면 ArrayList를 사용해야 하기 때문에 ArrayList로 풀어봤습니다.
먼저 빠른 입력을 위하여 BufferedReader 클래스를 사용하여 입력을 받아주고, 정수형으로 캐스팅합니다.
그리고 ArrayList를 만들어주고 반복문을 사용하여 N의 약수를 구하고, 해당 약수를 ArrayList인 list에 추가해줍니다.
그리고 만약에 "6 3"과 같이 입력으로 주어진다면 [1,2,3,6]이 약수들의 list이기 때문에 3번째 요소는 3과 같이 정상적으로 나오지만
"25 4"와 같이 입력이 주어진다면 [1,5,25]가 약수들의 list인데 K = 4이기 때문에 "IndexOutOfBoundsException"에러가 발생하게 됩니다.
따라서 예외 처리를 해주거나 아래의 "다른 풀이"처럼 다른 작업을 해줘야 합니다. 이번 풀이에서는 예외처리를 했습니다.
다른 풀이 ✅
"다른 풀이"에서는 ArrayList를 사용하지 않고 count 변수와 인덱스를 사용하여 약수를 체크했습니다.
반복문을 사용하여 N의 약수들을 찾고, 약수면 count를 증가시킵니다.
만약 count가 K와 같아지면 해당 약수(i)를 result변수에 담아주고 반환하여 마무리해 줬습니다.
참고 ❗
[JAVA] 입출력, BufferedReader, StringTokenizer
Java로 코딩테스트를 보거나 입력을 사용해야 할 때 Scanner 클래스를 사용하면 편리하지만 속도가 느리다는 단점이 있습니다. 그렇기 때문에 속도가 빠른 BufferReader 클래스를 사용을 하면 시간복
pixx.tistory.com
[JAVA] ArrayList 알아보기 (동적 배열)
Java에서는 기본적으로 여러 데이터를 다룰 때 배열을 사용합니다. 그러나 배열은 정적이므로, 한 번 생성되면 크기를 변경할 수 없습니다. 배열은 처리할 데이터의 개수가 정해진 경우에 유용
pixx.tistory.com
'Coding Test > 백준' 카테고리의 다른 글
[백준] 시험 감독 (BufferedReader, StringTokenizer, 그리디 알고리즘, 13458번, Java) (0) | 2024.05.31 |
---|---|
[백준] 세탁소 사장 동혁 (BufferedReader, 그리디 알고리즘, 2720번, Java) (0) | 2024.05.31 |
[백준] 바구니 뒤집기 (BufferedReader, StringTokenizer, 10811번, Java) (0) | 2024.05.30 |
[백준] 피보나치 수 2 (BufferedReader, 동적 계획법 DP, 2748번, Java) (0) | 2024.05.29 |
[백준] 2007년 (BufferedReader, StringTokenizer, 1924번, Java) (0) | 2024.05.29 |