목록분류 전체보기 (295)
거의 알고리즘 일기장
www.acmicpc.net/problem/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net 코드 #include #include #include using namespace std; class Fish { public: bool isAlive = true; short y; short x; short dir; Fish() {} Fish(int y_in, int x_in, int dir_in) :y(y_in), x(x_in), dir(dir_in) {} }; int board[4][4]..
www.acmicpc.net/problem/19237 19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net 풀이방법 1. 먼저 상어를 클래스로 정의해두었다. class Shark { public: bool isAlive = true; int y; int x; int dir; Shark(){} Shark(int y_in, int x_in):y(y_in), x(x_in){} }; 2. 방향의 우선순위와 냄새에 관한 배열, 상어의 현황을 표시해주는 맵등을 정의해주었다. //id..
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRFInKex8DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이방법 간단하게만 설명하자면 1. board를 [4001][4001]로 확장시킨다. 왜냐하면 0.5움직일때 부닥치는 경우도 있기때문에 2. 좌표를 (주어지는 좌표)*2 + 2000 로 재계산해서 저장 3. 원자들을 움직인다. 이때 좌표값이 0 N; int x, y, dir, k; for (int i = 0; i > x >> y >> dir >> k; x = x * 2 + 2000;..
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5VwAr6APYDFAWu SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이방법 내가 푼 방식의 아이디어의 핵심은 w, h를 만들어서 방향이 3번일때 부터 w, h만큼 사각형을 만들어 비교하는 방식으로 풀었다. 밑의 그림을 보면 이해가 빠르다. 그외는 주석을 참고하길 바란다. 코드 #include #include #include using namespace std; int N; int dy[4] = { 1, 1, -1, -1 }; int dx[4] = { 1, -1, -1, 1 };..
CNN의 필요성 이론적으로는 ANN으로도 모든 함수를 근사할 수 있다고 알고있지만, 이미지 데이터에 직접 이용해보면 성능이 좋지 않다. 그 이유는 밑의 그림을 보면 이해가 빠를것이다. 사람이 보기에는 그냥 x와 기울어진 x이지만 컴퓨터에게는 전혀 다른 input이다. 그러므로 만약에 기울어지지 않은 x의 데이터만 학습한 모델은 오른쪽과 같이 기울어진 x는 판별하기 힘들것이다. 이처럼 기본적인 ANN은 변형된 데이터에 약하다. 사실 왼쪽과 오른쪽의 이미지의 특징은 비슷하다. 밑의 그림을 보면 알수 있다. 그래서 나온게 CNN이다. 사람처럼 이런 변형된 x라도 이러한 이미지의 특징을 뽑아 훈련시켜 판별할 수 있게끔 하는 신경망이다. CNN의 연산 과정 위의 그림이 정말 잘 설명해둔 그림이다. 왼쪽의 입력 이..
인공신경망이란? 생물학적 신경망을 모방해 만듬. 이 내용은 밑의 링크 참고ko.wikipedia.org/wiki/%EC%9D%B8%EA%B3%B5_%EC%8B%A0%EA%B2%BD%EB%A7%9D 인공 신경망 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 인공 신경망은 노드들의 그룹으로 연결되어 있으며 이들은 뇌의 방대한 뉴런의 네트워크과 유사하다. 위 그림에서 각 원모양의 노드는 인공 뉴런을 나타내고 � ko.wikipedia.org 요소 입력층, 은닉층, 출력층이 필요하며 은닉층이 2개 이상이면 심층 신경망으로 불림 활성화 함수 위의 수식을 보면 중간중간 시그마 기호가 있는걸 알수있는데 이 시그마는 활성화 함수를 의미한다. 활성화 함수가 필요한 이유는 값이 비선형성을 띄게 하기..
주어진 데이터를 잘 설명하는 직선 하나를 찾는 일! y = w * x + b 에서 들어오는 x, y 데이터에 잘 맞는 w, b의 값을 찾는것 이를 위해서는 두가지를 먼저 알고 가야한다. 손실함수, 경사하강법 손실함수 : 모델의 예측값과 실제 값과의 오차, 주로 MSE(평균 제곱오차 사용) 경사하강법 (gradient decent) : 수식을 보면 알기 쉬운데 주어진 w에서 기울기를 구하고 그 기울기에 대해서 w를 조금씩 업데이트하면서 손실함수의 극솟값을 구하는 방식이다. (수식 : W(t+1) = W(t) - gradient(기울기) X learning rate(학습률)) (왜 w로 미분해서 그 값이 0이 되는 지점을 찾지 않고 경사하강법을 이용하냐면 데이터가 많아지면 많아질수록 연산량이 매우매우 늘어나..
www.youtube.com/watch?v=z8lK69BQ0VE&t=556s 이 영상과 케라스로 짠 코드를 보고 pytorch로 바꿔 구현해보았다. epoch : 100 batch size : 32 model : class Net(nn.Module): def __init__(self): # 가중치 초기화 super(Net, self).__init__() # sequential을 사용하면 편하게 모델 만들기 가능 self.layer1 = nn.Sequential( nn.Conv2d(1, 32, 3, padding=1), nn.ReLU(inplace=True), nn.MaxPool2d(2), nn.Conv2d(32, 64, 3, padding=1), nn.ReLU(inplace=True), nn.MaxPoo..
programmers.co.kr/learn/courses/30/lessons/17678 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 [23:59,23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59] 18:00 programmers.co.kr 풀이방법 1. 셔틀시간 09:00 ~ 23:59 2. 콘은 최대한 가장 늦은 시간을 탐. 3. 콘은 게으르기 때문에 같은 시각에 도착한 크루 중 대기열에서 제일 뒤에 선다. 위의 조건을 고려해서 짜면된다. 내 로직을 간단히 설명하자면 1. 버스의 도착시간과 크루가 대기열에 선 시간을 모두 vector형태의 자료에다가 넣는다. ..
In [1]: import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import DataLoader import torchvision.datasets as datasets from torch.autograd import Variable import visdom import torch.optim as optim In [3]: vis = visdom.Visdom() textwindow = vis.text("Hello Pytorch") Setting up a new session... In [9]: import torchvision import torchvision.transforms as transfor..