분류 전체보기 136

[백준] 11727번 2×n 타일링 2 - 파이썬(Python)

https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 문제 접근법 #규칙 발견이었는데 n에 대한 개수들을 잘못 찾아 규칙을 발견하지 못하여 이건 결국 찾아봄.. 규칙 : arr[i]=arr[i-1]+arr[i-2]*2 코드 n=int(input()) arr=[0]*(n+1) arr[1]=1 if n!=1: arr[2]=3 for i in range(3,n+1): arr[i]=arr[i-1]+arr[i-2]*2 print(arr[n]%10007)

[백준] 11726번 2×n 타일링 - 파이썬(Python)

https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제 접근법 2부터 순서대로 나열을 해보니 피보나치 수열임을 확인 피보나치 수열은 arr[i]=arr[i-1]+arr[i-2]의 규칙을 갖고 있음. 피보나치 수열을 적용해 마지막 값까지 구하고, arr[n]을 10007로 나눈 나머지를 출력 코드 n=int(input()) arr=[0]*(n+1) arr[1]=1 if n!=1: arr[2]=2 for i in range(3,n+1): arr[i]=arr[i-1]+ar..

[백준] 1463번 1로 만들기 - 파이썬(Python)

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 접근법 처음엔 x가 2로 나눠질 때, 3으로 나눠질 때, -1로 빼기를 if문으로 했었는데 입력받은 수 10일 때 안됨을 확인했음. 반례가 바로 다행히 나와서 다른 접근법을 구상해야했고, 동적 알고리즘은 처음 접하기에 사용법 검색 동적 접근법, 즉 다이나믹 프로그래밍은 memoization을 주로 활용 같은 것을 계속 반복하면 시간을 잡아먹으니 한번 찾은 건 저장해놓음으로써 반복의 횟수를 줄여주는 방식 다이나믹 프로그래밍은 상향식, 하향식이 존재 이 문제는 입력받은 수까지의 여정을 그리는 게 나아 상향식 ..

[백준] 11653번 소인수분해 - 파이썬(Python)

https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 문제 접근법 소인수분해된 값들은 소수들로 이루어져있으니 소수들을 먼저 구해야한다 생각함. 때문에 입력받은 수까지의 소수를 구해서 소수 2부터 시작해서 입력받은 수가 1이 될 때까지 나눠지는 소수들을 순서대로 출력 (2로 나눴을 때 나머지가 0이 나오면 계속 2로 나누다 0이 아니면 다음 소수인 3으로 넘어가기) 입력받은 수가 1이면 바로 종료 코드 n=int(input()) if n==1: exit() prime=[True]*(n+1) prime[1]=False for i in range(2,int(n**0.5)+1..

[백준] 11576번 Base Conversion - 파이썬(Python)

https://www.acmicpc.net/problem/11576 11576번: Base Conversion 타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의 www.acmicpc.net 문제 접근법 1. 입력받은 arr을 각 자릿수에 맞춰 계산 후 10진법으로 변환 2. 출력할 때 자릿수 사이에 띄어쓰기를 넣어줘야 하므로 변환 직전마다 공백 넣기 3. 변환된 10진법의 수를 B진법으로 변환 코드 A,B=map(int, input().split()) m=int(input()) arr=list(map(int,input().split())) a=0 for i in r..

2부 5.1 합성곱 신경망 소개

2부 실전 딥러닝 5장 컴퓨터 비전을 위한 딥러닝 5.1 합성곱 신경망 소개 완전 연결된 모델보다 컨브넷이 더 잘 작동됨. Dense층은 입력 특성 공간에 있는 전역 패턴을 학습하지만 합성곱 층은 지역 패턴을 학습함. 이미지일 경우 작은 2D 윈도우로 입력에서 패턴을 찾음. 컨브넷의 2가지 성질 1. 학습된 패턴은 평행 이동 불변성을 가짐. 2. 컨브넷은 패턴의 공간적 계층 구조를 학습할 수 있음. 패딩 입력 특성 맵의 가장자리에 적절한 개수의 행과 열을 추가 입력과 동일한 높이와 너비를 가진 출력 특성 맵을 얻고 싶을 때 사용 (경계 문제를 해결해줌.) 스트라이드 두 번의 연속적인 윈도우 사이의 거리로 합성곱의 파라미터 기본값은 1이며 스트라이드가 1보다 큰 스트라이드 합성곱도 가능 스트라이드 2를 사..

1부 4.5 보편적인 머신 러닝 작업 흐름

1부 딥러닝의 기초 4장 머신 러닝의 기본 요소 4.5 보편적인 머신 러닝 작업 흐름 문제 정의와 데이터셋 수집 입력 데이터와 출력 데이터 확인 성공 지표 선택 정확도일지 정밀도일지 재현율일지 등 성공의 지표를 잘 생각해 선택해야 함. 성공의 지표가 모델의 최적화할 손실 함수를 선택하는 기준이 됨. 클래스 분포가 균일한 분류 문제 : 정확도 / ROC / AUC가 일반적 클래스가 균일하지 않은 문제 : 정밀도 / 재현율이 일반적 랭킹 문제나 다중 레이블 문제 : 평균 정밀도 사용 가능 캐글에서 다양한 문제들과 측정 지표들을 볼 수 있음. 평가 방법 선택 홀드아웃 검증 세트 분리 데이터가 풍부할 때 사용 K-겹 교차 검증 홀드아웃 검증을 사용하기에 샘플의 수가 너무 적을 때 사용 반복 K-겹 교차 검증 데..

1부 4.4 과대적합과 과소적합

1부 딥러닝의 기초 4장 머신 러닝의 기본 요소 4.4 과대적합과 과소적합 최적화(optimization) 가능한 훈련 데이터에서 최고의 성능을 얻으려고 모델을 조정하는 과정 일반화(generalization) 훈련된 모델이 이전에 본 적 없는 데이터에서 얼마나 잘 수행되는지 의미 과소적합(underfitting) 훈련 데이터의 손실이 낮아질수록 테스트 데이터의 손실도 낮아짐. 과대적합(overfitting) 훈련 데이터가 여러 번 반복 학습하고 나면 어느 시점붜 일반화 성능이 더 이상 높아지지 않고 검증 세트의 성능이 멈추고 감소되기 시작함. 훈련 데이터가 많으면 일반화 성능이 뛰어나짐. 규제 기법 종류 규제 기법 데이터를 더 모으는 것이 불가능할 때 차선책은 모델이 수용할 수 있는 정보의 양을 조절하..

1부 4.3 데이터 전처리, 특성 공학, 특성 학습

1부 딥러닝의 기초 4장 머신 러닝의 기본 요소 4.3 데이터 전처리, 특성 공학, 특성 학습 신경망을 위한 데이터 전처리 [목적] 주어진 원본 데이터를 신경망에 적용하기 쉽도록 만드는 것 [종류] 벡터화 / 정규화 / 누락된 값 다루기 / 특성 추출 등 벡터화 신경망에서 모든 입력과 타깃은 부동 소수 데이터로 이루어진 텐서여야 함. 사운드, 이미지, 텍스트 등 처리해야 할 것이 무엇이든지 먼저 텐서로 변환해야 함. 값 정규화 권장하는 정규화 방법 각 특성별로 평균이 0이 되도록 정규화 각 특성별로 표준 편차가 1이 되도록 정규화 일반적으로 비교적 큰 값이나 균일하지 않은 데이터를 신경망에 주입하는 것은 위험함. 이렇게 하면 업데이트할 그래디언트가 커져 네트워크가 수렴하는 것을 방해 네트워크를 쉽게 학습..