12주차 #1715 카드정렬하기
🐶 문제
💬 처음 든 생각
- 어떻게 정렬하느냐가 중요한게 아니라, 정렬 순서의 경우의 수마다 비교 횟수를 구하는게 중요한 것 같은데 모든 경우의 수를 구하는건 확률과 통계의 nPr 이 생각남. 여기서는 모든 카드 묶음을 뽑아야하는거니까 nPn 이면 결국 n! 과 같아진다.
그럼 최악의 경우 100,000! 의 케이스를 계산해야할텐데
딱봐도 2억번의 연산을 넘길것같다.
- 그러면 가장 작은 연산이 나오는 법칙을 찾아야할텐데,
직관적으로 생각했을때 가장 앞에 나오는 수가 가장 많이 반복되니 , 가장 앞에 나오는 수가 가장 작은 수가 되어야겠다 라는 생각이 들었다.
✔️ 첫번째 시도
그럼 최악의 경우 100,000! 의 케이스를 계산해야할텐데
딱봐도 2억번의 연산을 넘길것같다.
직관적으로 생각했을때 가장 앞에 나오는 수가 가장 많이 반복되니 , 가장 앞에 나오는 수가 가장 작은 수가 되어야겠다 라는 생각이 들었다.
가장 앞에 나오는 수가 가장 많이 반복되니 , 가장 앞에 나오는 수가 가장 작은 수가 되어야겠다 < 를 구현 해봤다.
이렇게 생각하면 점화식은
일때
로 정리했다.
# 데이터 입력
N = int(input())
data = []
for _ in range (N) :
data.append(int(input()))
print(data)
# 데이터 오름차순 정렬
data = data.sort()
data_len = len(data)
# 점화식 예외
if data_len == 1 :
print(data[0])
exit(0)
# 점화식 전처리
result = 0
first_set = data[0] + data[1]
del data[0]
del data[1]
data.insert(0, first_set)
# 점화식
for i in range(data_len) :
for _ in range(0, i+1, 1) :
result += data[i]
print(result)
그런데 계속
다 됐는데 이런 에러가 난다ㅠㅠ
왜 리스트의 길이를 구할 수 없는거지??
이거 검색해보다가 시간이 다됐다ㅠㅠ
Author And Source
이 문제에 관하여(12주차 #1715 카드정렬하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yesterdaykite/12주차-1715-카드정렬하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)