Altiora Petamus

유진수 본문

1day-1algorithm

유진수

Haril Song 2021. 8. 27. 20:24

1356번: 유진수

 

1356번: 유진수

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

www.acmicpc.net

🤔생각해보기

  1. 나누어진 문자열의 길이조절을 위한 roop 를 실행시키며 좌우로 slice 한 후,
  2. 숫자로 변환하여 곱연산을 수행합니다.
  3. 만약 이 때 나누어진 둘의 결과값이 같다면 answer 를 "YES" 로 바꾸고 roop 를 종료합니다.
  4. answer 를 출력합니다.

Code

from functools import reduce

N = input()

answer = "NO"
for i in range(1, len(N)):
    # 문자열 분할
    prev = reduce(lambda x, y: x * y, map(int, list(N[:i])))
    cur = reduce(lambda x, y: x * y, map(int, list(N[i:])))
    if prev == cur:
        answer = "YES"
        break

print(answer)

 

문제의 알고리즘 자체는 쉬운편이지만 functools 의 reduce 를 활용하기 좋은 문제여서 풀이를 작성해보았습니다. reduce는 여러 언어에서 기본으로 제공하는 함수인데 파이썬은 라이브러리를 import 하여 사용해야 합니다.

내부에서 곱연산이 아닌 합연산을 수행할 때도 사용할 수 있지만, sum 이라는 함수가 있어서 파이썬에서는 그닥 사용할 일이 없는거 같네요.

'1day-1algorithm' 카테고리의 다른 글

대칭 차집합  (0) 2021.09.05
애너그램 만들기  (0) 2021.08.26
Perm Check  (0) 2021.08.23
DNA  (0) 2021.08.22
세로읽기  (0) 2021.08.17