▶ 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변수에 담아주고 반환하여 마무리해 줬습니다.
참고 ❗
'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 |