일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 최린컴퓨터구조
- shrinkmatch
- mocov3
- WGAN
- 백준 알고리즘
- mme paper
- SSL
- UnderstandingDeepLearning
- adamatch paper
- Pix2Pix
- ConMatch
- semi supervised learnin 가정
- cifar100-c
- remixmatch paper
- Pseudo Label
- simclrv2
- CoMatch
- dann paper
- Entropy Minimization
- CycleGAN
- GAN
- tent paper
- conjugate pseudo label paper
- shrinkmatch paper
- BYOL
- CGAN
- 컴퓨터구조
- Meta Pseudo Labels
- 딥러닝손실함수
- dcgan
- Today
- Total
목록백준알고리즘 (12)
Hello Computer Vision
https://www.acmicpc.net/problem/13909 13909번: 창문 닫기 첫 번째 줄에는 창문의 개수와 사람의 수 N(1 ≤ N ≤ 2,100,000,000)이 주어진다. www.acmicpc.net 처음에는 [True, False] 리스트를 만들고 반복문을 돌려 하나씩 열고 닫는 과정을 반복했는데 바로 메모리 부족이 떴다. 아마 문제에서 제기된 n의 범위가 21억이라 그런 거 같다.. 그래서 다른 분들의 풀이를 살펴본 결과 해당 인덱스의 약수의 개수가 홀수이면 창문은 열린 상태이다. 처음부터 창문은 닫혀있으므로 약수가 1개: 열림, 약수가 2개: 열림-닫힘, 약수가 3개: 열림-닫힘-열림.. 이렇게 반복되므로 약수가 홀수이면 되는 것인데 1부터 n까지의 수 중 약수가 홀수인 것을 어..
https://www.acmicpc.net/problem/1735 1735번: 분수 합 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. www.acmicpc.net 접근하기는 쉬웠는데 깔끔한 코드로 접근하기는 어려웠다. 일단 유클리드 호제법을 이용해서 최대공약수를 구해주고, 분모와 분자를 따로따로 구한 후, 분모와 분자에 대한 최대공약수로 나누어주면 되는 문제였다. 처음에 다른 분들의 코드를 보면서 이해가 안간 부분은 분자 부분이었는데 이는 예시로 한번 접근해보면 쉬운 거 같다. a, b = map(int, input().split()) c, d = map(int, input().split()) def gcd(..
https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 일단 시간제한이 있어서 리스트를 이용해 풀면 안되겠다고 1차적으로 생각했다. 그래서 첫번째 코드대로 풀었는데 시간초과가 났는데 내가봐도 코드가 지저분하긴 하다. 그래서 다른 분들의 풀이를 한번 살펴봤다. n = int(input()) dic_ = {} name_list = [] for i in range(n): name, inout = input().spli..
https://www.acmicpc.net/problem/1181 단어를 정렬하는 것인데 핵심은 단어 개수를 먼저 봐야한다는 것이다. 그리고 나서 단어 개수가 같다면 알파벳순으로 정렬하라는 것인데 상위 정렬이 개수이고, 하위 정렬이 알파벳인걸 알 수 있다. 그렇다면 코드에서는 먼저 하위 정렬 개념인 알파벳 정렬을 해주고 상위 정렬인 개수로 정렬을 해주면 된다. n = int(input()) word_list = [] for _ in range(n): word_list.append(input()) word_list = set(word_list) word_list = list(word_list) word_list.sort() word_list.sort(key = len) for i in word_list: ..
https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 처음에는 input을 str으로 받고 분해하는 작업을 번거롭게 했었는데 알고보니 str을 리스트로 받아주면 하나하나 알아서 분해되기 때문에 번거로운 작업을 할 필요 없다. 반복문 마지막까지 갈 경우 없는 것이므로 0을 내뱉는다. n = int(input()) answer = 0 generatr = 0 for generator in range(1, n + 1): list..
https://www.acmicpc.net/problem/9506 9506번: 약수들의 합 어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라. www.acmicpc.net 엄청 어려운 문제는 아니었다. while 문으로 input을 받고 for문으로 그리디하게 약수를 찾은 후 이러한 약수들을 리스트에 넘겨주었다. 그리고 문제에 대한 조건인 이 약수들의 합이 만약 자기자신이랑 같을 때 이를 완전수라고 하는데, 따라서 for문을 돌릴 때 자기자신을 포함하지 않았다. 완전수 일 때 이를 출력할 때는 for문을 이용해서 출력하고, 마지막 수일 때는 + 기호를 빼주는..
https://www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 다 풀고 다른 분들 풀이를 봤는데 굉장히 간단하더라.. 일단 나는 굉장히 그리디하게 문제를 풀어보았다. 기존에 했던 것처럼 행렬을 만드는 과정에서 생긴 문제는 이번에는 공백없이 입력을 받는 문제였다. 따라서 반복문을 하나 추가로 설정해 새롭게 리스트를 만들고 넣어주었다(for k in inputs 부분). 그리고 각 row마다 15개가 안찬다면 그 공백들은 '!' 를 추가로 넣어서 각 ro..
https://www.acmicpc.net/problem/2566 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 어제 2차원 리스트에 관해 감을 못잡았었는데 문제를 풀다보니 감을 잡앗다. 일단 9x9 행렬이니 미리 변수를 할당해주고, row list를 만들어 반복문을 실행하는 동안 이 리스트 안에 넣어준다. 참고로 넣어줄 때 리스트로 넣어주어야 한다. 그냥 넣어주면 9개라는 숫자를 넣었는데 받는 변수는 1개이기 때문에 에러가 난다. 그리고 이 문제의 핵심은 아마 row, list, max number를 반복문 전에 미리 할당해..