```
백준 3040번 백설 공주와 일곱 난쟁이 Kotlin 구현해 보기
```

배워갈 내용
- 백준 3040번 풀이
문제 링크
https://www.acmicpc.net/problem/3040
3040번: 백설 공주와 일곱 난쟁이
매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다.
www.acmicpc.net
문제 설명
백준 3040번 백설 공주와 일곱 난쟁이는
난이도 브론즈 등급의 문제로서
9개의 숫자가 주어지고
9개의 숫자 중에 7개의 숫자를 이용해서 100을 만들 수 있을 때
해당되는 7개의 숫자를 제외한 2개의 숫자를 찾아주면 됩니다
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
코드 설명
입력을 받고
정해진 조건에 맞춰서 계산을 해서 출력해 주면 되는
문제입니다.
찾는 7개의 숫자 대신에
9개의 숫자 합 - 100을 하여서
2개의 숫자를 찾는 역발상을 하여서 풀었습니다
요즘에는 주석이나 설명 없이 코드로 설명하고자 노력 중입니다
만약 코드가 이해가 안 가시면 댓글 부탁드립니다
코드
fun main() {
val inputDto = readInput()
print(inputDto.findCombination(100))
}
data class InputDto(
val n: Int,
val numbers: MutableList<Int>
) {
fun findCombination(expectedSum: Int): String {
val sum = numbers.sum() - expectedSum
for (i in 0..numbers.size) {
for (j in (i + 1) until numbers.size) {
if (numbers[i] + numbers[j] == sum) {
val otherNumbers = numbers.filterIndexed { index, _ -> index != i && index != j }
return otherNumbers.joinToString("\n")
}
}
}
return ""
}
}
fun readInput(): InputDto {
// val n = readLine()
// ?.toIntOrNull()
// ?: throw IllegalArgumentException("Invalid n")
val n = 9
val numbers: MutableList<Int> = ArrayList()
repeat(n) {
numbers.add(
readLine()
?.toIntOrNull()
?: throw IllegalArgumentException("Invalid opinion")
)
}
return InputDto(n, numbers)
}
// https://codemasterkimc.tistory.com/
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
'Kotlin > Kotlin 알고리즘' 카테고리의 다른 글
백준 30328번 Java Warriors Kotlin 구현해 보기 (0) | 2023.10.14 |
---|---|
백준 1966번 프린터 큐 Kotlin 구현해 보기 (0) | 2023.10.09 |
백준 18110번 solved.ac Kotlin 구현해 보기 (0) | 2023.10.08 |
백준 11866번 요세푸스 문제 0 Kotlin 구현해 보기 (0) | 2023.10.07 |
백준 10810번 공 넣기 Kotlin 구현해 보기 (0) | 2023.10.07 |
```
백준 3040번 백설 공주와 일곱 난쟁이 Kotlin 구현해 보기
```

배워갈 내용
- 백준 3040번 풀이
문제 링크
https://www.acmicpc.net/problem/3040
3040번: 백설 공주와 일곱 난쟁이
매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다.
www.acmicpc.net
문제 설명
백준 3040번 백설 공주와 일곱 난쟁이는
난이도 브론즈 등급의 문제로서
9개의 숫자가 주어지고
9개의 숫자 중에 7개의 숫자를 이용해서 100을 만들 수 있을 때
해당되는 7개의 숫자를 제외한 2개의 숫자를 찾아주면 됩니다
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
코드 설명
입력을 받고
정해진 조건에 맞춰서 계산을 해서 출력해 주면 되는
문제입니다.
찾는 7개의 숫자 대신에
9개의 숫자 합 - 100을 하여서
2개의 숫자를 찾는 역발상을 하여서 풀었습니다
요즘에는 주석이나 설명 없이 코드로 설명하고자 노력 중입니다
만약 코드가 이해가 안 가시면 댓글 부탁드립니다
코드
fun main() {
val inputDto = readInput()
print(inputDto.findCombination(100))
}
data class InputDto(
val n: Int,
val numbers: MutableList<Int>
) {
fun findCombination(expectedSum: Int): String {
val sum = numbers.sum() - expectedSum
for (i in 0..numbers.size) {
for (j in (i + 1) until numbers.size) {
if (numbers[i] + numbers[j] == sum) {
val otherNumbers = numbers.filterIndexed { index, _ -> index != i && index != j }
return otherNumbers.joinToString("\n")
}
}
}
return ""
}
}
fun readInput(): InputDto {
// val n = readLine()
// ?.toIntOrNull()
// ?: throw IllegalArgumentException("Invalid n")
val n = 9
val numbers: MutableList<Int> = ArrayList()
repeat(n) {
numbers.add(
readLine()
?.toIntOrNull()
?: throw IllegalArgumentException("Invalid opinion")
)
}
return InputDto(n, numbers)
}
// https://codemasterkimc.tistory.com/
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
'Kotlin > Kotlin 알고리즘' 카테고리의 다른 글
백준 30328번 Java Warriors Kotlin 구현해 보기 (0) | 2023.10.14 |
---|---|
백준 1966번 프린터 큐 Kotlin 구현해 보기 (0) | 2023.10.09 |
백준 18110번 solved.ac Kotlin 구현해 보기 (0) | 2023.10.08 |
백준 11866번 요세푸스 문제 0 Kotlin 구현해 보기 (0) | 2023.10.07 |
백준 10810번 공 넣기 Kotlin 구현해 보기 (0) | 2023.10.07 |