https://www.acmicpc.net/problem/1356
1356번: 유진수
첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다 작거나 같은 자연수이다.
www.acmicpc.net
문제
유진수는 어떤 수를 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를 출력한다.
내 풀이
# 31252kb 44ms
num = list(input())
ans = 0
for i in range(len(num)-1):
num_1,num_2 = 1,1
for j in num[:i+1]: # i번까지 각 숫자들 곱하기
num_1 *= int(j)
for k in num[i+1:]: # i+1번 부터 각 숫자들 곱하기
num_2 *= int(k)
if num_1 == num_2: # 같다면 +1 해줘서
ans+= 1
break
if ans > 0: # 출력할때 1 이상이면 yes
print("YES")
elif ans == 0: # 같은값이 없으면 no
print("NO")
'파이썬 알고리즘 연습' 카테고리의 다른 글
[Python | 백준 1524번] 세준세비 (0) | 2024.01.25 |
---|---|
[Python | 백준 1357번] 뒤집힌 덧셈 (0) | 2024.01.24 |
[Python | 백준 1296번] 팀 이름 정하기 (1) | 2024.01.24 |
[Python | 백준 1292번] 쉽게 푸는 문제 (1) | 2024.01.24 |
[Python | 백준 1268번] 임시 반장 정하기 (1) | 2024.01.22 |