https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWcPjEuKAFgDFAU4
😟정곤아;;;
str과 int 변환을 쓰려면은 다른 코드에서 시간을 아껴야하는 문제였다
1) input에서 주어진 숫자들의 곱을 조합으로 만들기 (dfs사용)
T = int(input())
for tc in range(1, 1+T):
N = int(input())
arr = list(map(int, input().split()))
path = [0]*2
MAX = -1
multiples = []
def rcr(level, start, total):
if level == 2:
multiples.append(total)
return
for i in range(start, len(arr)):
rcr(level+1, i+1, total*arr[i])
rcr(0, 0, 1)
2) int를 str형으로 바꾼 후, 각 자리마다 비교
비교했을때 단조증가가 아니면 flg=1으로 두고,
flg=0인 숫자만 MAX값과 비교
for i in range(len(multiples)):
flg = 0
multiples[i] = str(multiples[i])
for j in range(len(multiples[i])-1):
if multiples[i][j]<=multiples[i][j+1]:
continue
else:
flg = 1
break
if flg == 0:
multiples[i]=int(multiples[i])
if multiples[i]>MAX:
MAX = multiples[i]
전체풀이)
T = int(input())
for tc in range(1, 1+T):
N = int(input())
arr = list(map(int, input().split()))
path = [0]*2
MAX = -1
multiples = []
def rcr(level, start, total):
if level == 2:
multiples.append(total)
return
for i in range(start, len(arr)):
rcr(level+1, i+1, total*arr[i])
rcr(0, 0, 1)
# print(multiples)
# flg_cnt =0
for i in range(len(multiples)):
flg = 0
multiples[i] = str(multiples[i])
for j in range(len(multiples[i])-1):
if multiples[i][j]<=multiples[i][j+1]:
continue
else:
flg = 1
break
if flg == 0:
multiples[i]=int(multiples[i])
if multiples[i]>MAX:
MAX = multiples[i]
print(f'#{tc} {MAX}')
'파이썬 알고리즘' 카테고리의 다른 글
[파이썬] SWEA 13702 델타검색 (1) | 2022.10.01 |
---|---|
[파이썬] 백준 2605 줄 세우기 (1) | 2022.10.01 |
[파이썬] 13748 진기의 최고급 붕어빵 (1) | 2022.10.01 |
[파이썬] 백준 2309 일곱 난쟁이 풀이 2가지 (1) | 2022.09.30 |
[파이썬] 백준 13300 방배정 풀이 (1) | 2022.09.25 |