728x90
문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
입력
첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
출력
첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
예제 입력1
1
2
3
4
5
6
7
8
9
10
예제 출력1
10
예제 입력2
42
84
252
420
840
126
42
84
420
126
예제 출력2
1
풀이
- 배열에 입력을 받고 42로 나눈 나머지를 중복되지 않게 result 에 저장하여 result 의 size 를 출력 한다.
- 중복을 허용하지 않는 Set 을 이용하여 result 를 출력 한다.
풀이1
import java.util.*
fun main(args: Array<String>) {
val sc = Scanner(System.`in`)
val list = Array(10) {
sc.nextLine().toInt()
}
var result = mutableListOf<Int>()
result.add(list[0] % 42)
for (i in 1..9) {
val v = list[i] % 42
var matched = false
for (res in result) {
if (res == v) {
matched = true
break;
}
}
if (!matched) result.add(v)
}
println(result.size)
}
풀이2
import java.util.*
fun main(args: Array<String>) {
val sc = Scanner(System.`in`)
val result = mutableSetOf<Int>()
repeat(10) {
result.add(sc.nextLine().toInt() % 42)
}
println(result.size)
}
- Set 의 정의를 확실하게 알았다면 정말 간단한 알고리즘 문제이다. Set 을 사용하지 않을 경우 코드가 눈에 띄게 복잡해 진다ㅠㅠ
728x90
'알고리즘' 카테고리의 다른 글
[BOJ][KOTLIN] 10809 알파벳 찾기 (0) | 2021.11.16 |
---|---|
[Kotlin] char 를 Int 로 변환 (0) | 2021.11.16 |
[Kotlin] 배열 (0) | 2021.11.15 |
시간 복잡도 계산 하기 (0) | 2021.10.26 |
알고리즘 문제 해결 시 입력 받기 (0) | 2021.10.25 |