목록분류 전체보기 (427)
안 쓰던 블로그
10610 30 #include #include #include #include using namespace std; /* "길거리에서 찾은 수에 포함된 숫자들을 섞어, 30의 배수가 되는 가장 큰 수를 만든다" 처음에 문제를 봤을 때는 주어진 N값을 소인수분해해서 나온 여러 숫자들을 어케 잘 연산해서 30의 배수를 만드는 줄 알았다. 그런데 무한히 더해버리면 무한히 큰 30의 배수를 만들 수 있기 때문에 이건 아니었다 예제를 다시 보니까 "포함된 숫자"라는 의미가 주어진 N의 각각 자리수를 의미하는 것이었다 그리고 각 자리수를 어케 잘 재배치해서 가장 큰 30의 배수를 만들면 된다 30의 배수가 될 조건을 만족하는지 확인하고 각 자리수를 큰 수부터 재배치한다 30의 배수가 될 조건 1. 끝자리가 0 2..
1676 팩토리얼 0의 개수 #include #include #include #include using namespace std; int n, m; /* 2와 5를 곱할 때만 0이 생긴다 5보다 2가 많으니까 5만 세면 된다 근데 5의 배수가 예외 5*2=10 5*5*2*2=100 5*5*5*2^3=1000 2는 충분히 많다고 칠 수 있으므로(소인수분해 하면 2가 잔뜩나온다) 5의 배수는 1개씩 늘 때마다 0의 개수가 1개씩 증가되며 추가된다고 볼 수 있다 5^4=625는 문제 범위인 500을 넘으므로 패스 */ int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; while (n >= 2) { if (n % ..
1 2 3 4 B B 42 B F F 다음과 같이 공백과 숫자(1
약수 1: https://www.acmicpc.net/problem/4375 약수: https://www.acmicpc.net/problem/1037 C가 A의 약수라면, A/C도 A의 약수가 되어야 한다 C=3, A=24라면, 24/3=8도 24의 약수가 되어야 한다 그러면 중간을 기준으로 대칭을 이루게 된다 이 아이디어로 전체 약수를 구할 때 더 빠르게 구할 수 있다 전체 약수 구하기 1. 1~A로 모두 나눠보기: O(A)걸림. N개 수에 대해서 연산하므로 N*O(N) = O(N^2) 2. 1~루트(A)로 모두 나눠보기: O(루트(A))걸림. N개 수에 대해서 연산하면 N*O(루트(N))=O(N*루트(N)) 이런 아이디어는 범위가 클 때 사용 가능하다 N
[1번 케이스] #include #include using namespace std; int main() { string s; int n = 100000; for (int i = 0;i < n;i++) { s += "A"; } return 0; } 이것은 O(N)의 복잡도가 걸린다 [2번 케이스] #include #include using namespace std; int main() { string s; int n = 100000; for (int i = 0;i < n;i++) { s = s + "A"; } return 0; } 이것은 O(N^2)의 복잡도가 걸린다 1번 케이스는 문자열 s의 마지막에 "A"가 추가되는 방식으로 돌아간다. 2번 케이스는 매번 새로운 문자열을 만든다고 할 수 있다. 즉, ..
chkpoint_filepath = "best_model.h5" Mycallback = tf.keras.callbacks.ModelCheckpoint( filepath = chkpoint_filepath, monitor = "val_accuracy", #모델을 저장할 때 기준이 되는 값 save_weights_only = False, mode = "max", #for val_acc, this should be max save_best_only = True, save_freq = "epoch") 학습을 돌릴 때, 가장 결과가 좋았을 때의 모델을 저장하는 ModelCheckpoint를 많이 사용한다. 나도 항상 이것을 잘 사용을 해 왔다. 그런데 이번에 늘 쓰던 코드임에도 모델이 아예 생성되지 않는 에러가 ..