12주차 #1715 카드정렬하기

🐶 문제

백준링크

💬 처음 든 생각

  1. 어떻게 정렬하느냐가 중요한게 아니라, 정렬 순서의 경우의 수마다 비교 횟수를 구하는게 중요한 것 같은데 모든 경우의 수를 구하는건 확률과 통계의 nPr 이 생각남. 여기서는 모든 카드 묶음을 뽑아야하는거니까 nPn 이면 결국 n! 과 같아진다.
    그럼 최악의 경우 100,000! 의 케이스를 계산해야할텐데
    딱봐도 2억번의 연산을 넘길것같다.
  1. 그러면 가장 작은 연산이 나오는 법칙을 찾아야할텐데,
    직관적으로 생각했을때 가장 앞에 나오는 수가 가장 많이 반복되니 , 가장 앞에 나오는 수가 가장 작은 수가 되어야겠다 라는 생각이 들었다.

✔️ 첫번째 시도

가장 앞에 나오는 수가 가장 많이 반복되니 , 가장 앞에 나오는 수가 가장 작은 수가 되어야겠다 < 를 구현 해봤다.

이렇게 생각하면 점화식은
a1=n1+n2이고,나머지an=nn(,n>=2)a_1=n_1+n_2 이고, 나머지 a_n=n_n(단,n>=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)

그런데 계속

다 됐는데 이런 에러가 난다ㅠㅠ
왜 리스트의 길이를 구할 수 없는거지??
이거 검색해보다가 시간이 다됐다ㅠㅠ

좋은 웹페이지 즐겨찾기