![1356번: 유진수](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXtgmO%2FbtsEctcjbDi%2FqeOfyFWAYvQSU4b8tgtRGK%2Fimg.png)
![스몰스테핑](https://t1.daumcdn.net/tistory_admin/static/manage/images/r3/default_L.png)
1356번: 유진수백준/문제2024. 1. 31. 16:19
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/1356
1356번: 유진수
첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다 작거나 같은 자연수이다.
www.acmicpc.net
언어 : Kotlin
문제 설명 :
유진수는 어떤 수를 10진수로 표현한 뒤 그 수를 두 부분으로 나눴을 때, 앞부분 자리수의 곱과 뒷부분 자리수의 곱이 같을 때를 말한다.
예를 들어, 1221은 유진수이다. 12와 21로 나눴을 때, 앞부분 자리수의 곱 1*2는 뒷부분 자리수의 곱 2*1과 같기 때문이다. 1236도 마찬가지로 유진수이다. 하지만, 1234는 아니다. 수를 나눌 때 항상 연속된 자리수를 나눠야하고, 각 부분에 적어도 한자리는 있어야 한다.
예를 들어, 12345는 총 4가지 방법으로 나눌 수 있다. 1-2345, 12-345, 123-45, 1234-5 어떤 수 N이 주어질 때, 이 수가 유진수인지 아닌지 구하는 프로그램을 작성하시오.
입력 :
첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다 작거나 같은 자연수이다.
출력 :
첫째 줄에 N이 유진수이면 YES, 아니면 NO를 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
1236 | YES |
1 | NO |
1221 | YES |
4729382 | NO |
42393338 | YES |
풀이 :
import java.io.BufferedWriter
import java.io.OutputStreamWriter
fun main() = with(System.`in`.bufferedReader()) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val n = readLine()
var result = "NO"
for (i in 1 .. n.lastIndex) {
val front = n.substring(0 until i)
val back = n.substring(i .. n.lastIndex)
var frontCal = 1
front.chunked(1).map { frontCal *= it.toInt() }
var backCal = 1
back.chunked(1).map { backCal *= it.toInt() }
if (frontCal == backCal) result = "YES"
}
bw.write(result)
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
2870번: 수학숙제 (0) | 2024.02.02 |
---|---|
9933번: 민균이의 비밀번호 (1) | 2024.02.01 |
7490번: 0 만들기 (1) | 2024.01.30 |
1755번: 숫자놀이 (0) | 2024.01.29 |
3062번: 수 뒤집기 (1) | 2024.01.26 |
![스몰스테핑](https://t1.daumcdn.net/tistory_admin/static/manage/images/r3/default_L.png)
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!