본문 바로가기

알고리즘/python

[python/파이썬] 백준 1356 유진수

반응형

[문제 출처]

https://www.acmicpc.net/problem/1356

 

1356번: 유진수

첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다 작거나 같은 자연수이다.

www.acmicpc.net

 

[문제 풀이]

 

어떤 10진수가 주어졌을 때, 그 수를 앞과 뒤 이렇게 두 부분으로 나누었을 때, 

각 부분의 자릿수들의 곱이 서로 같을 때 이 수를 유진수라고 한다.

 

입력으로 주어진 수가 유진수인지 아닌지 판별하는 코드를 작성하는 문제이다.

 

예를 들어 

1221 같은 경우

12/21로 나눈다면, 1x2 = 2x1이므로 유진수이다.

 

1236의 경우

123/6으로 나눈다면, 1x2x3 = 6이므로 유진수이다.

 

주어진 수가 유진수인지 아닌지 알기 위해서는 앞뒤로 나누는 모든 경우의 수에 대해서, 각 부분의 곱을 비교해서 알아봐야 한다.

1236이라면

1/236 

12/36

123/6 

이렇게 3가지 경우로 나눌 수 있으며 각 경우에서 곱을 구해서 비교하면 된다.

#1356

n = input()

check = 0
for i in range(1,len(n)):
  a = n[:i]
  b = n[i:]

  mul_a = 1
  for A in a:
    mul_a *= int(A)

  mul_b = 1
  for B in b:
    mul_b *= int(B)

  if mul_a == mul_b:
    check = 1
    break

if check == 1:
  print("YES")
else:
  print("NO")
반응형