2023/09 47

[백준] 16206: 롤케이크 (Python, 파이썬)

문제 링크: https://www.acmicpc.net/problem/16206 16206번: 롤케이크 오늘은 재현이의 생일이다. 재현이는 친구 N명에게 롤케이크를 1개씩 선물로 받았다. 롤케이크의 길이는 A1, A2, ..., AN이다. 재현이는 길이가 10인 롤케이크만 먹는다. 따라서, 롤케이크를 잘라서 www.acmicpc.net Key point 롤케이크의 길이가 10보다 작은 경우: 쓸모 X 롤케이크의 길이가 10인 경우: 바로 count 가능 롤케이크의 길이가 10보다 큰 경우: 10으로 나눴을 때 나머지가 0으로 떨어지는 것이 아닌 것보다 한 개 더 많이 count 가능 N, M = map(int, input().split()) rolls = list(map(int, input().split..

1일 1솔 2023.09.27

[백준] 1141번: 접두사 (Python, 파이썬)

문제 링크: https://www.acmicpc.net/problem/1141 1141번: 접두사 접두사X 집합이란 집합의 어떤 한 단어가, 다른 단어의 접두어가 되지 않는 집합이다. 예를 들어, {hello}, {hello, goodbye, giant, hi}, 비어있는 집합은 모두 접두사X 집합이다. 하지만, {hello, hell}, {giant, www.acmicpc.net 하이고 길이별로 sort를 해야할지, 그냥 오름차순 sort를 해야할지 고민하다가 후자를 택한게 오랜 시간을 잡아먹게 한 듯 하다.. Key point 접두사는 비교 단어들보다 항상 짧아야하므로 길이순으로 정렬했어야 한다. N = int(input()) words = [] for _ in range(N): words.appen..

1일 1솔 2023.09.27

[Coursera] DLS_C3W2: Transfer Learning / Multi-task Learning / End-to-End Learning

1. Transfer Learning : 우리가 원하는 task의 (상대적으로 적은) dataset을 활용해서, 큰 dataset으로 pre-trained 된 NN를 retrain 해서 target task를 수행하는 것 만약, 우리가 radiology diagnosis task를 수행하려고 한다고 하자. 이때 관련 데이터셋이 100장 밖에 없다면 어떻게 효과적으로 diagnosis task를 수행하는 model을 만들 수 있을까? 이런 상황에서 생각해 볼 수 있는 것이 Transfer learning 혹은 fine-tuning이다. 먼저, 매우 큰 image recognition dataset으로 모델을 학습한 다음, radiology diagnosis dataset을 활용해서 앞의 layer들은 fr..

ML || DL/이론 2023.09.26

[Coursera] DLS_C3W2: Error Analysis / Mismatched Training and Dev/Test Set

1. Error Analysis : 우리 모델의 성능 향상을 위해 error를 분석해야 한다. 이를 위해서 약 100개 정도의 mislabeled dev set examples를 살펴보는 것을 추천한다. 이렇게 했을 때의 장점은 아래와 같다: 어떤 것을 먼저 수정해야할 지, 우선순위를 정하는데 도움을 준다. 다양한 접근 방식의 효용성을 측정 가능하다 (틀린 걸 개선 했을 때의 상한선) Cat detection의 예시를 살펴보자. 우리는 Error analysis를 통해, 접근해 볼 만한 아이디어 몇 개를 생각해 볼 수 있다. Dog를 cat이라고 잘못 인식한 경우를 고친다. Great cats (사자, 표범, 치타 등)을 cat이라고 잘못 인식한 경우를 고친다. Blurry 이미지에 대한 성능을 개선한다..

ML || DL/이론 2023.09.24

[백준] 17615번: 볼 모으기 (Python, 파이썬)

문제 링크: https://www.acmicpc.net/problem/17615 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주 www.acmicpc.net 이거 문제 못풀었다 .. ; 다른 코드 찾아보면서 놀랬다.. 너무 간단해서... 이렇게 푼 사람 천잰가...? Key Point - 한 번에 답을 찾는게 아니라, 빨간 공을 왼쪽, 오른쪽으로 몰았을 때 / 파란 공을 왼쪽, 오른쪽으로 몰았을 때 이렇게 네 가지 경우의 수를 구한 다음에 min 값을 return 하는 것 - 그럼 각각의 움직이는 횟수는 어떻게..

1일 1솔 2023.09.24

[논문 스터디] 2023.09.22 후기

발표 논문: 1. A fast learning algorithm for deep belief nets 2. TSMixer: An All-MLP Architecture for Time Series Forecasting 새롭게 알게 된 점 - RBM (Restricted Boltzmann Machine): 초기 ML 생성 모델이다. visible unit으로부터 hidden unit sampling. 다시 hidden unit으로부터 visible unit을 generate (recontruction). 원래 visible unit과 hidden unit으로부터 reconstruction된 reconstructed visible unit이 유사해지도록 weight와 bias를 조정 - DBN (Deep Be..

[백준] 4889번: 안정적인 문자열

문제 링크: https://www.acmicpc.net/problem/4889 4889번: 안정적인 문자열 입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가 2000을 넘는 경우 www.acmicpc.net 맨 처음 시도 방법 import sys input = sys.stdin.readline flag = True count = 1 while flag: a = list(input().rstrip()) if '-' in a: flag = False res = 0 # 여기서 바꿔주지 않으면, 아래 for문에서 res가 중복되어 count될 수 있음 if a[0] != '{': a[0] =..

1일 1솔 2023.09.22

[Coursera] DLS_C3W1: Orthogonalization / Evaluation Metric / Human-level Performance

1. Introduction to ML Strategy : NN의 성능을 올리기 위해서 시도해 볼 아이디어는 무척이나 많다. 더 많은 데이터 모으기, 더 다양한 학습셋 모으기, 더 오래 학습하기, 더 좋은 optimizer 사용하기, 더 큰/작은 네트워크 설계하기, dropout 사용하기, regularization, network architecture 바꾸기 등등등.. 우리는 이러한 많은 시도들을 해볼 수 있는데 이때 중요한 개념이 orthogonalization이다. (1) Orthogonalization : 각각의 Idea가 하나의 문제만 해결하도록 설계하는 것. 예를 들어, 자동차 핸들에는 방향 조절 기능만 넣어놓는 것이 우리가 다루기가 편하다. 하지만 핸들에 '0.5 * 방향조절 + 0.3 *..

ML || DL/이론 2023.09.21

[백준] 9009번: 피보나치 (Python, 파이썬)

문제 링크: https://www.acmicpc.net/problem/9009 9009번: 피보나치 입력 데이터는 표준입력을 사용한다. 입력은 T 개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 테스트 데이터의 수를 나타내는 정수 T 가 주어진다. 각 테스트 데이터에는 하나의 정수 n www.acmicpc.net 내가 푼 방법: - 피보나치 수가 n보다 크거나 같을 때까지만 loop를 돌린다. (dp에 작은 수 부터 저장됨) - 그 다음 저장된 피보나치 수를 역순으로 (큰 순서대로) 확인해가면서, 제일 큰 피보나치 수를 n에서 빼주고, 그 다음 사용할 피보나치 수를 찾는다. (반복) import sys input = sys.stdin.readline T = int(input()) for _ in ..

1일 1솔 2023.09.21

[백준] 1105번: 팔 (Python, 파이썬)

문제 링크: https://www.acmicpc.net/problem/1105 1105번: 팔 첫째 줄에 L과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net Key point: L과 R의 자리수가 다르면, 그 사에이 8이 없는 수 무조건 존재 --> 0 return 만약 L과 R의 자리수가 같으면, L과 R의 첫번째 자리수부터 각 자리수를 확인한다. (for 문을 돌면서) L과 R의 첫 번째 원소 (i=0)가 다르면, 그 사이에 8이 없는 수 존재 --> 0 return L과 R의 첫 번째 원소 (i=0)가 같은데, 그 수가 8이라면 --> res += 1 / 그 수가..

1일 1솔 2023.09.21