딥러닝을 공부하게 되면서 원래는 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