[브론즈 1] 백준 1356 - 유진수 (파이썬)
글 작성자: pental
https://www.acmicpc.net/problem/1356
정수 N이 주어졌을 때, 이 수가 유진수인지 판별해야한다.
유진수는 어떤 수 N을 앞부분과 뒷부분으로 나누었을 때, 앞부분 각 자리수의 곱과 뒷부분 각 자리수의 곱이 같은 경우를 의미한다.
예를 들어서 다음과 같다.
1221 -> (12 | 21) => 1 * 2 = 2, 2 * 1 = 2 -> 즉, 유진수
1236 -> (123 | 6) => 1 * 2 * 3 = 6, 6 = 6 -> 즉, 유진수
1234 -> 어떤 방법으로도 곱이 같아지지 않음 -> 즉, 유진수 아님
코드는 다음과 같이 작성하였다.
# 백준 1356 - 유진수
N = list(input())
start = len(N)
result = False
for i in range(1, start) :
A = N[:i]
B = N[i:]
temp_A, temp_B = 1, 1
for x in A :
temp_A *= int(x)
for y in B :
temp_B *= int(y)
if temp_A == temp_B :
result = True
break
if result :
print("YES")
else :
print("NO")
start는 전체 길이를 나타내며, result의 경우 유진수 여부를 판별하는 변수이다.
자르는 위치를 1부터 시작해서 start 까지 돌면서 A와 B를 나눈다. 즉 앞부분과 뒷부분을 나누고, 각각 앞부분과 뒷부분의 각 요소를 곱해서 두 곱이 같으면 유진수, 다르면 유진수가 아니도록 코드를 작성하였다.
예를 들어서 1221를 입력한 경우는 다음과 같다.
- 길이: 4
- i=1 → A="1", B="221" → 곱: 1 vs 4 → 불일치
- i=2 → A="12", B="21" → 곱: 2 vs 2 → 일치 → YES 출력
시작복잡도는 O(N^2)이라 조금 비효율 적이지만 그래도 자리수가 최대 10이라 충분히 빠르다.
'Programming > 백준' 카테고리의 다른 글
[브론즈 2] 백준 1263 - 펫 (파이썬) (0) | 2025.09.09 |
---|---|
[브론즈 2] 백준 1297 - TV 크기 (파이썬) (0) | 2025.09.09 |
[브론즈 2] 백준 1350 - 진짜 공간 (파이썬) (0) | 2025.09.09 |
[실버 5] 백준 11723 - 집합 (파이썬) (0) | 2025.08.13 |
백준 5522, 10178, 9295, 10569, 2921 (파이썬) (1) | 2025.08.01 |
댓글
이 글 공유하기
다른 글
-
[브론즈 2] 백준 1263 - 펫 (파이썬)
[브론즈 2] 백준 1263 - 펫 (파이썬)
2025.09.09 -
[브론즈 2] 백준 1297 - TV 크기 (파이썬)
[브론즈 2] 백준 1297 - TV 크기 (파이썬)
2025.09.09 -
[브론즈 2] 백준 1350 - 진짜 공간 (파이썬)
[브론즈 2] 백준 1350 - 진짜 공간 (파이썬)
2025.09.09 -
[실버 5] 백준 11723 - 집합 (파이썬)
[실버 5] 백준 11723 - 집합 (파이썬)
2025.08.13