728x90

[파이썬 / 백준 17427 번] 약수의 합 2

처음에는,, N보다 작은 자연수의 약수를 하나씩 구해서 다 더한값을 리턴하는걸로 동적계획법을 사용해서 코딩을 했는데 당연히 시간초과가 났다. 어쨌든 수학 카테고리에 있는거니까, 아마 동적계획법과는 상관 없을거라고 생각하고, 하나씩 풀어서 해봤다. 한 10까지 해 보니까 약수의 합이라고 하는게 결국은 n을 1부터 나누었을때의 몫을 다 더하면 되는거였다. 예를들어서 n이 6이라고 했을때, 1은 6번(1*6) 2는 3번(2*3) 3은 2번(3*2) 4는 1번(4*1) 5는 1번(5*1) 6은 1번(6*1) 다 더하면 33이 나온다. 실제로 약수를 구하면 1:1 2: 1,2 3: 1,3 4: 1,2,4 5: 1,5 6: 1,2,3,6 이렇게 되는데 나오는 횟수가 결국은 n을 나누어 나온 몫이라는것을 알 수 있다..

Baekjoon Case 2021.12.10 0
[파이썬 / 백준 1655 번] 가운데를 말해요

처음에 문제를 이해하는데도 시간이 걸렸다.. 결국 SORTING 해서 중간에 있는 값을 찾아야 하는건데, 입력값이 계속 들어올 때 마다 SORTING 을 해 주어야 알 수 있을 것 같다. 그래서 처음에는 입력값을 받을때마다 sort 를 했는데 역시나 시간초과.. 아마 내가 모르는 모듈을 써야 할 것 같아서 찾아봤는데 heap 을 사용해서 코딩을 짜야 하는 것이었다. 사실 그동안 heap 이라는걸 들어만 보고 구체적으로 어떻게 사용하는 건줄 몰랐는데, 생각보다 매우 간편하고, 이런 sorting 문제에 활용 하면 좋을 것 같다. from sys import stdin import heapq input=stdin.readline T=int(input()) left=[] right=[] ans=[] for i..

Baekjoon Case 2021.12.08 0

[파이썬 / 백준 17427 번] 약수의 합 2

처음에는,, N보다 작은 자연수의 약수를 하나씩 구해서 다 더한값을 리턴하는걸로 동적계획법을 사용해서 코딩을 했는데 당연히 시간초과가 났다. 어쨌든 수학 카테고리에 있는거니까, 아마 동적계획법과는 상관 없을거라고 생각하고, 하나씩 풀어서 해봤다. 한 10까지 해 보니까 약수의 합이라고 하는게 결국은 n을 1부터 나누었을때의 몫을 다 더하면 되는거였다. 예를들어서 n이 6이라고 했을때, 1은 6번(1*6) 2는 3번(2*3) 3은 2번(3*2) 4는 1번(4*1) 5는 1번(5*1) 6은 1번(6*1) 다 더하면 33이 나온다. 실제로 약수를 구하면 1:1 2: 1,2 3: 1,3 4: 1,2,4 5: 1,5 6: 1,2,3,6 이렇게 되는데 나오는 횟수가 결국은 n을 나누어 나온 몫이라는것을 알 수 있다..

Baekjoon Case 2021.12.10 0
728x90