728x90

Coding Exercise 88

[파이썬 / 백준 10160번] 30

진짜 한 일주일동안 풀었던 것 같다. 처음에는 엄청 쉽다고 생각했는데 알고보니 생각을 잘 못 하고 있었다. 처음에는 1. 0이 없으면 -1 2. 2자리수면 3으로 나누어지는지 3. 3자리수 이상이면 0을 빼고 나머지 숫자 2개를 조합해서 끝 두 자리가 3으로 나뉘어지는지 로 기준을 나누어서 코딩을 짰는데, 시간초과, 출력초과 기타등등.. 디버깅 해 보니까 전혀 안맞음 이유는 전혀 모르겠지만 처음에 3번에 너무 꽂혀있어서 만들 수 있는 두 자리 조합중 가장 작으면서 큰(??) 수를 빼고,, 나머지 숫자로 큰 수를 조합해서 출력하는것으로 했다.. 동적계획법때문에 계속 작은 부분으로 먼가 해결하려고 한듯.. 왜 인지 모르겠는데 끝 두 자리 수가 3으로 나누어지면 3의 배수라고 생각했던 것 같다... 알고보니 ..

Baekjoon Case 2021.10.28

[파이썬 / 백준 1629번] 곱셈

엄청 단순 해 보이는데 계속 시간 초과가 나서 고생했다. 결국 검색해서 알게 되었는데 알고 나니 허무.. 거듭제곱의 속성을 사용하여 풀면 되는것이었다. 예를들어 10^28 을 구하려면, 10을 28번 곱해야 하기 때문에 연산속도가 엄청나게 늘어나게된다. 하지만 10^28은 (10^14)^2와 같기때문에 이런 논리로 구하면 연산이 확실히 줄어들게된다. 10^28 =(10^14)^2 =((10^7)^2)^2 =(((10^3)^2*10)^2)^2 =((((10^2)*10)^2*10)^2)^2 이런식으로 제곱수를 먼저 구하여서 연산하면 속도가 매우매우 빠루다. def power(A,B): if B%2>0: return power(A,B-1)*A elif B==0: return 1 elif B==1: return..

Baekjoon Case 2021.10.21

[머신러닝] 최적화 알고리즘 - 경사하강법(Gradient Descent)

*머신러닝의 3가지 프로세스 1. 가설을 수학적인 식으로 표현할것 2. 성능을 측정하는 손실함수를 정의 3. 손실함수를 최소화하는 최적화 알고리즘을 설계 세번째 최적화 알고리즘으로 가장 일반적으로 사용되는 것이 경사하강법 - 손실 함수의 미분값과 러닝 레이트의 곱만큼을 원래 파라미터에서 뺀 값으로 파라미터를 갱신 1. Batch Gradient Descent (BGD) - 파라미터를 갱신 할 때 전체 트레이닝 데이터를 하나의 Batch로 만들어서 사용 - 전체 트레이닝 데이터에 대해 미분값을 계산해야 하므로 많은 시간이 소요되는 단점이 있다. 2. Stochastic Gradient Descent (SGD) - 파라미터를 갱신할 때 1개의 트레이닝 데이터만 사용하는 기법 - 파라미터를 자주 업데이트 할 ..

Machine Learning 2021.10.20

[파이썬 / 백준 1476번] 날짜 계산

문제를 풀다가 좀 재밌게 푼 것 같아서 업로드한다. 처음에는 동작 원리 자체를 이해 못해서 그냥 S가 가장 크면 S를 출력하게 했는데, 다시 읽어보니 각각 15, 28, 19로 나눠서 나온 나머지가 일치하는 수를 찾는것이었다. 그래서 제일 큰수인 28에 0부터 차례대로 곱해서 S를 더한 값을 15와 19로 나눠서 나머지가 각각 E, M과 일치한 값을 찾도록 코드를 짰는데 값이 틀렸다. 다시 생각 해 보니 만약 15와 19로 나누어지면 나머지가 0이라 값이 달라진다. 그래서 나머지가 0일 경우에는 각각 15와 19로 값이 변하게끔 코딩을 짰더니 성공! E,S,M=map(int,input().split()) i=0 while True: a=28*i+S b=a%19 c=a%15 if b==0: b=19 if ..

Baekjoon Case 2021.10.16

[파이썬 / 백준 1934번] 최소공배수(유클리드 호제법)

동적계획법을 하다가 너무 막혀서 일단 백준 문제중에 쉬워보이는것 위주로..먼저 풀어보기 기초 알고리즘을 좀 익혀야 심화 문제를 풀 수 있을 것 같아서..(당연) 어쨌든 처음에는 그냥 큰 수의 배수를 하나씩 구하면서 작은 수로 나눠지면 출력되게 했는데 시간이 계속 초과되어서 찾아보니 유클리드 호제법이라는게 있었다. 유클리드 호제법 : 큰 수를 작은수로 나누어 나온 나머지로 작은 수가 나누어지면 최대공약수를 구할 수 있다. ex) 45와 27의 최대공약수를 구해야 하는 경우 1) 45%27=18 (공약수가 아님) 2) 27%18=9(공약수가 아님 ) 3)18%9=0(공약수는 9) def ul(a,b): while True: r=a%b if r==0: return b break else: a,b=b,r T=i..

Baekjoon Case 2021.10.15

[파이썬 / 백준 1006번] 다리놓기

처음에는 조합을 구해서 카운트 하려다가 예제의 마지막 케이스를 보고 안될 것 같다고 생각을 했다. 오랜만에 조합의 개수를 구하는 식을 떠올리려고 하니,, 전혀 기억 안남.. 조합의 개수 구하는 식 (nCr) : n(n-1)(n-2). . . .(n-r+1) / r! 어쨌든 조합 개수를 구하는 식을 구해서 처음에 제출했는데 맞았다. 다른 분 하시는 것을 보니까 !(팩토리얼) 값 구할 때 동적계획법을 이용 하셔서 활요해서 풀이했다. T=int(input()) for _ in range(T): W,E=map(int,input().split()) dp=[1 for _ in range(E+1)] for i in range(1,E+1): dp[i]=i*dp[i-1] print((dp[E]//dp[E-W])//dp[..

Baekjoon Case 2021.10.07
728x90