https://www.acmicpc.net/problem/2588
풀이
더보기
이 문제도.. 별로 어렵진 않은데
뭣보다 이 문제의 경우는 자리에 따른 수를 떼야한다는게 그나마 문제일거 같은데..
근데 이것도 별로 어렵지 않은데, 특히 1의 자리수부터 점진적으로 커지는건 더 쉬움..
a값과 b값을 받음 ->
루프 생성 ->
b를 10으로 나누어서 나머지를 구함(이게 자릿수) ->
이걸 a와 곱해서 프린트 함 ->
b를 10를 나누어서 몫을 구한다(이게 다음 루프를 돌아서 반복함 ->
최종 값이 0 이하가 나오면 루프 종료
예시로 385를 b로 받았다 가정해보자.
385%10 하면 나머지가 5가 되는데, 이게 일의 자리수이다.
해당 자릿수로의 연산이 끝나면 385/10을 하면 38이 나온다.
이 38로 두 번째 루프를 돌린다.
38%10 하면 나머지가 8이 나오는데, 이게 십의 자리수이다.
해당 자릿수로의 연산이 끝나면 38/10을 하면 3이 나온다.
이 3으로 세 번째 루프를 돌린다.
3%10하면 나머지가 3이 나오는데, 이게 백의 자리수이다.
해당 자릿수로 연산이 끝나면 3/10을 하면 0이 나온다.
이 0으로 네 번째 루프를 돌린다.
이 값은 0 이하가 되므로 루프를 종료한다.
이를 코드로 나타내면,
(아, bClone을 해둔 이유는 마지막에 원값의 계산이 필요한데 루프에서 직접적으로 b값을 수정하므로 초기의 b값을 수정하기 위한 용도)
import java.util.*
fun main(args: Array<String>) {
question2588()
}
fun question2588() {
val sc: Scanner = Scanner(System.`in`)
var a = sc.nextInt()
var b = sc.nextInt()
var bClone = b
while (b > 0) {
println(a * (b % 10))
b /= 10
}
println(a*bClone)
}
반응형
'스터디(beakjoon)' 카테고리의 다른 글
Kotlin] 백준 10171번 문제 풀이 (0) | 2023.04.04 |
---|---|
Kotlin] 백준 11382번 문제 풀이 (0) | 2023.04.04 |
Kotlin] 백준 10430번 문제 풀이 (0) | 2023.04.04 |
Kotlin] 백준 10926번 문제 풀이 (0) | 2023.04.04 |
Kotlin] 백준 10869번 문제 풀이 (0) | 2023.04.03 |