분류 전체보기
-
알고스팟 원주율 외우기 PIPS 2020. 1. 22. 20:58
https://algospot.com/judge/problem/read/PI algospot.com :: PI 원주율 외우기 문제 정보 문제 (주의: 이 문제는 TopCoder 의 번역 문제입니다.) 가끔 TV 에 보면 원주율을 몇만 자리까지 줄줄 외우는 신동들이 등장하곤 합니다. 이들이 이 수를 외우기 위해 사용하는 방법 중 하나로, 숫자를 몇 자리 이상 끊어 외우는 것이 있습니다. 이들은 숫자를 세 자리에서 다섯 자리까지로 끊어서 외우는데, 가능하면 55555 나 123 같이 외우기 쉬운 조각들이 많이 등장하는 방법을 택하곤 합니다. 이 때, 각 조각들의 난이 algospot.com 딱 봐도 dp문제인 것을 알 수 있습니다. 길이가 3, 4, 5 방법이 1, 2, 3, 4, 5 인 것을 메모이제이션 ..
-
알고스팟 타일링 TILING2 미완PS 2020. 1. 22. 03:14
https://algospot.com/judge/problem/read/TILING2 algospot.com :: TILING2 타일링 문제 정보 문제 2xn 크기의 사각형을 2x1 크기의 사각형으로 빈틈없이 채우는 경우의 수를 구하는 프로그램을 작성하세요. 예를 들어 n=5라고 하면 다음 그림과 같이 여덟 가지의 방법이 있습니다. 경우의 수는 n이 커지면 아주 커질 수 있으므로, 1000000007으로 나눈 값을 대신 출력하세요. 입력 입력의 첫 줄에는 테스트 케이스의 수(C > n; for (int i = 0; i a[i][j]; } } cout
-
알고스팟 최대 증가 부분 수열 LISPS 2020. 1. 20. 16:41
https://algospot.com/judge/problem/read/LIS algospot.com :: LIS Longest Increasing Sequence 문제 정보 문제 어떤 정수 수열에서 0개 이상의 숫자를 지우면 이 수열의 부분 수열 (subsequence) 를 얻을 수 있다. 예를 들어 10 7 4 9 의 부분 수열에는 7 4 9, 10 4, 10 9 등이 있다. 단, 10 4 7 은 원래 수열의 순서와 다르므로 10 7 4 9 의 부분 수열이 아니다. 어떤 부분 수열이 순증가할 때 이 부분 수열을 증가 부분 수열 (increasing subseque algospot.com dp도 완전탐색을 해줘야합니다. 그럼 1 2 3 4 5 가 있다고 가정해봅시다. 1에서 5까지의 LIS를 구하고 2..
-
알고스팟 팬미팅 FANMEETINGPS 2020. 1. 17. 17:47
https://algospot.com/judge/problem/read/FANMEETING algospot.com :: FANMEETING 팬미팅 문제 정보 문제 가장 멤버가 많은 아이돌 그룹으로 기네스 북에 올라 있는 혼성 팝 그룹 하이퍼시니어가 데뷔 10주년 기념 팬 미팅을 개최했습니다. 팬 미팅의 한 순서로, 멤버들과 참가한 팬들이 포옹을 하는 행사를 갖기로 했습니다. 하이퍼시니어의 멤버들은 우선 무대에 일렬로 섭니다. 팬 미팅에 참가한 M명의 팬들은 줄을 서서 맨 오른쪽 멤버에서부터 시작해 한 명씩 왼쪽으로 움직이며 멤버들과 하나씩 포옹을 합니다. 모든 팬들은 동시에 한 명씩 움직입니 algospot.com 입력값이 커서 완전탐색으로는 안된다는 것을 알 수 있다.(댓글보면 정답처리가 되는 거 같긴..
-
미니배치 학습 구현하기딥러닝 2020. 1. 16. 17:38
미니배치 학습이란 훈련 데이터 중 일부를 꺼내고(미니배치), 그 미니배치에 대해서 경사법으로 매개변수를 갱신하는 것 앞의 2층 신경망 클래스와 MNIST 데이터셋을 사용하여 구현해 봅시다. 이때 학습과정에서 오버피팅이 일어나지 않게 해야합니다. 어떻게 할까요? 학습 도중에 시험 데이터로 오버피팅이 일어나는지 안나는지 확인하면서 학습을 하면 됩니다. (신경망은 범용성을 가져야하므로 시험 데이터는 훈련 데이터와 달라야겠죠.) 오버피팅이 일어나면 학습을 중단하고 다른 데이터셋으로 훈련을 하면 됩니다. 일정 구간마다 평가를 하고 정확도를 기록하면 좋을 거 같네요. 구현 import numpy as np from dataset.mnist import load_mnist from two_layer_net impor..
-
2층 신경망 클래스 구현하기딥러닝 2020. 1. 16. 17:26
미니배치 학습을 구현해보기 전에 우선 2층 신경망 클래스를 구현해보겠습니다. 2층 신경망에 필요한 메소드(기능)는 무엇이 있을까요? 매개변수(가중치, 편향) 초기화, 예측값, 손실함수의 기울기, 정확도... 이 정도가 있겠네요. 그럼 구현해봅시다. import sys, os sys.path.append(os.pardir) from common.functions import* from common.gradient import numerical_gradient #2층 신경망 class TwoLayerNet: #가중치 초기화 #input_size : 입력층의 갯수 #hidden_size : 은닉층의 갯수 #output_size : 출력층의 갯수 #weight_init_std : ?? def __init__(s..
-
손실함수와 경사법딥러닝 2020. 1. 16. 02:03
개요 학습이란 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것이다. 학습의 지표로 손실함수를 사용할 것이고, 손실함수의 최솟값을 구하는 것이 목표이다. 이것을 위한 기법으로 함수의 기울기를 활용하는 경사법을 이용할 것이다. 손실함수란 신경망 성능의 나쁨을 나타내는 지표. 그러므로 값이 작을수록 좋다. 그렇다면 학습의 지표로서 왜 정확도가 아닌 손실함수를 사용하는가? 정확도를 구하는 식을 보면 (정답 수)/(전체 수) 이므로 미세한 조절이 불가능하다. 그래서 우리는 손실함수를 사용할 것이고, 그 미분값을 활용해 최솟값을 찾을 것이다. -오차제곱합(평균오차제곱) k : 데이터의 차원수 y : 신경망의 출력(신경망이 추정한 값) t : 정답 레이블 식을 잘 보면 값이 작을수록 정답에 가까워진..
-
알고스팟 시계맞추기 Synchronizing ClocksPS 2020. 1. 15. 17:24
https://algospot.com/judge/problem/read/CLOCKSYNC algospot.com :: CLOCKSYNC Synchronizing Clocks 문제 정보 문제 그림과 같이 4 x 4 개의 격자 형태로 배치된 16개의 시계가 있다. 이 시계들은 모두 12시, 3시, 6시, 혹은 9시를 가리키고 있다. 이 시계들이 모두 12시를 가리키도록 바꾸고 싶다. 시계의 시간을 조작하는 유일한 방법은 모두 10개 있는 스위치들을 조작하는 것으로, 각 스위치들은 모두 적게는 3개에서 많게는 5개의 시계에 연결되어 있다. 한 스위치를 누를 때마다, 해당 스위치와 연결된 시계들 algospot.com 처음에는 하나의 스위치에 의해서만 돌아가는 시계를 찾은 다음 그것들을 조합하면 필연적인 상태가..