딥러닝을 공부하게 되면서 원래는 Jupyter 를 사용했는데 매번 환경을 맞춰주는 귀찮아서 colab 을 쓰기로 마음먹었다. (Docker 사용하면 되긴 하는데 내 컴퓨터가 m1 맥인 관계로 글카를 쓰지 못해서 그냥 colab 을 쓴다) colab 이 좋긴하나 Colab 작업물을 바로 git 에 push 를 하고 싶어서 이것저것 시행착오를 거친 과정을 작성한다. 위의 도식은 내가 적용하고 있는 방식이다. 위를 기준으로 설명하겠다. 1. Google Drive 에서 .ipnyb 파일 생성 1. google drive 에 접속 2. 오른쪽 마우스 클릭 후 Google Colaboratory 파일 생성 2. Google Drive 와 내 컴퓨터 연동 이 부분은 밑에 분이 설명을 잘 해 놓으셔서 그쪽으로 가서 ..
이전 외주처에서 공수과정이 길어지는 관계로 aws server migration 을 진행하게 되었다. 그 과정에서 S3 역시 이동을 하게 되었는데 백업이 필요할 것 같아 폴더 전체를 다운로드 하고 싶었는데 그 때의 시행착오를 정리한다. 본인은 mac 을 사용하므로 mac 기준으로 설명하겠다. 1. AWS CLI 다운로드 https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-mac.html macOS에서 AWS CLI 버전 2 설치, 업데이트 및 제거 - AWS Command Line Interface 설치 관리자의 아무 위치에서나 Cmd+L을 눌러 설치에 대한 디버그 로그를 볼 수 있습니다. 이렇게 하면 로그를 필터링하고 저장할 수 있..
문제 링크 1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다. 1234567891011121314151617181920212223...99100101102... 핵심 로직 1. 위의 수열에서 자리수별로 그 개수를 배열에 저장한다. ex) 1~9 : v[0] = 9 10~99 : v[1] = 180 100~999 : v[2] = 2700 : : 위의 식을 일반식으로 나타내면 아래와 같다. 2. 원래 수와 k 번째 숫자를 구한다. 여기서 말하는 원래 수는 위의 수열에서 2자리 수 이상의 수가 들어갈 때 등록되는 원본 수이다. 예를 들어 밑의 표에서 원래 주어진 수열에서 노란색 부분을 보자. 문제에서 주어진 수열은 1 이지만 그 1은 11에서 나온 것이다. 이 11을 원래 수라고..
auto_increment 는 증가하는 정수를 새로운 row 가 들어올 때 할당해 주는 문법이다. create table users( id int unsigned auto_increment, uuid binary(16) unique primary key, login_type int, login_id varchar(256), auth int default 0, pw varchar(256), phone varchar(13), name varchar(10), email varchar(256), regist_at datetime default now() ); mysql 에서 위의 쿼리를 실행하면 아래의 오류가 발생한다. Error Code: 1075. Incorrect table definition; there..
백준 10844(쉬운 계단 수) 와 비슷한 문제이다. 핵심로직 1. 2차원 배열로 작은 조각에서 각각 접근해야 한다. 2. 점화식은 아래와 같다. #include using namespace std; int N; long long dp[10][1001]; long long result; int main(void) { cin >> N; for (int i = 0; i < 10; i++) { dp[i][1] = 1;// 초기값 셋팅 } for (int x = 2; x
처음에 1차원 dp 배열로 풀려고 했는데 답이 잘 안나와서 한참 헤메다가 2차원 배열이 필요함을 알았다. 핵심로직 1. 1차원 dp 로는 풀리지 않기 때문에 각각의 조각에 대한 것을 단계별로 저장을 한다 -> 2차원 배열 2. 점화식은 아래와 같다(위의 사진도 참조) dp[i][x] = dp[i-1][x-1] + dp[i+1][x-1] : (x는 N 으로 가는 수) 3. 위의 점화식은 범위를 생각해서 조각을 나눠야 한다. i == 0 : dp[i][x] = dp[i+1][x-1] 1 N; for (int x = 2; x
이번에 NHN 신입공채 코테를 보게 되었는데 입출력이 평소에 풀던 거랑 달라서 많이 헤메었다. 또한 PS 문제를 풀고 나서 다른 사람의 소스를 보는데 함수에서 매개변수 호출 할 때 referece 호출이 많아서 이걸 정리해 보려 한다. 1. call by value 제일 기본적으로 값 자체를 받는 경우이다. 이러한 방식은 문제가 발생하는데 아래의 예시를 보자 #include using namespace std; void swap(int A, int B) { int tmp; tmp = B; B = A; A = tmp; } int main(void) { int A = 10; int B = 30; swap(A, B); cout
[https://www.acmicpc.net/problem/12851](백준 12851 숨바꼭질 2) 이전에 풀었던 [https://www.acmicpc.net/problem/1697](백준 1697(숨바꼭질)) 과 유사한 문제이고 로직은 거의 비슷하다. 핵심로직 위에서 말했듯 기본적인 로직은 이전에 숨바꼭질과 같다. 1.1. x-1, x, x*2 를 탐색하는 BFS 로 풀면 된다. 1.2. 처음으로 도착하는 노드가 최소시간이다. -> 바로 return 시킨다. [https://www.acmicpc.net/problem/1697](백준 1697(숨바꼭질)) 과는 다른 점은 아래와 같다. 2.1. 최소가 나올 수 있는 경우의 수도 구해야 하므로 방문하고 바로 return 을 하는 게 아니라 다시 conti..
백준 10250 핵심로직 왼쪽 아래부터 위로 그 다음 열 제일 아래서 다시 위로가 최소 거리로 넣는 방식이다. N % H 가 0 이면 H 을 넣어야 한다. #include #include using namespace std; int T, H, W, N, result; int tmpArr[2]; int main() { cin >> T; for (int i = 0; i > H >> W >> N; if (N % H == 0) { result = H * 100 + N / H; } else { result = N % H * 100 + N / H + 1; } cout
백준 4153 핵심로직 피타고라스의 정리 이용 입력이 작은 순으로 들어오는 게 아니기 때문에 sorting 필요 #include #include using namespace std; int triArr[3]; int main() { for (int i = 0; ; i++) { cin >> triArr[0] >> triArr[1] >> triArr[2]; if (triArr[0] == 0 && triArr[1] == 0 && triArr[2] == 0) break; else { sort(triArr, triArr + 3); if (triArr[0] * triArr[0] + triArr[1] * triArr[1] == triArr[2] * triArr[2]) cout
백준 1805번 직사각형에서 탈출 핵심로직 좌표평면을 생각하면 편하다. 4 가지 중 최소값을 가져오면 된다. -> x 와 w 사이의 거리, y 와 h 사이의 거리, x 와 y축 사이의 거리, y 와 x 축 사이의 거리 #include #include using namespace std; int x, y, w, h, result; int main() { cin >> x >> y >> w >> h; result = min({x, y, h-y, w-x}); cout
이제 본격적으로 dp 를 공부하면서 만난 첫번째 문제이다. top-down 방식으로 풀기를 원했지만 재귀가 아직 익숙하지 않아 bottom-up 으로 풀었다. 핵심로직은 2가지 이다. 1. 이전의 값을 이용해서 풀어야 한다. 2. 최초로 들어가 있던 값이 최소가 아닐 수 있다. #include #include using namespace std; int dp[3000001]; int X; void dpFunc(int X) { for (int i = 1; i dp[i] + 1) { dp[i * 3] = dp[i] + 1; } if (dp[i * 2] > dp[i] + 1) { dp[i * 2] = dp[i] + 1; } if (dp[i + 1] > dp[i] + 1) { dp[i + 1] = dp[i] +..
랩실에 계시던 보스가 모두의 딥러닝 을 공부를 하라 해서 시작했다. 기본적으로 저 강의에서 tensorflow 를 사용하는데 저걸 돌릴 수 있는 사양의 컴퓨터가 m1 mac 밖에 없었다. m1 mac 에 tensorflow 를 설치하기 위해 시행착오를 많이 거쳐봤는데 내가 찾아 봤던 것들 중에 Jeff Heaton 의 영상이 제일 따라하기 편했다. Jeff Heaton 의 2021년, Mac OSX M1에 TensorFlow 2.5, Keras 및 Python 3.9 설치 영상의 링크는 위에 있고 python3.9 에서 tf 2.0 이 안돌아 간다고 들었던 것 같은데 내 컴에서는 돌아가는 것 같다. 나중에 설치를 다시 해 보고 조금 더 알아본 다음 길게 포스팅 하겠다
기존에 공부를 하고 md 를 만들어서 깃에 repository 에 올려서 정리했는데 존시나 정리가 안되고 나중에 찾아보기 힘들어서 블로그를 작성하기로 했다. 올리는 자료는 크게 딥러닝, 수학, 알고리즘, 웹(BE : express, koa | FE : react) 이다.