목록분류 전체보기 (297)
거의 알고리즘 일기장
www.acmicpc.net/problem/17406 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 www.acmicpc.net 코드 #include #include #include #define MAX_VAL 987654321 using namespace std; class RotateData { public: int r; int c; int s; RotateData(){} RotateData(int r_in, int c_in, int s_in):r(r_in), c(c_in), s(s_in){} }; in..
www.acmicpc.net/problem/1400 1400번: 화물차 입력은 여러 개의 테스트 케이스로 구성된다. 각 테스트 케이스의 첫째 줄에는 두 개의 정수 m과 n이 주어진다, 여기서 m은 지도를 나타내는 행렬의 행의 크기이고 n은 열의 크기이다(2 ≤ m, n ≤ 2 www.acmicpc.net 코드 #include #include #include #include using namespace std; class TrafficLight { public: int y; int x; char startlight; int eastWestTime; int southNorthTime; }; class BfsData { public: int y; int x; int currentTime; vector visi..
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..