Contents 1. 배경 리눅스 커맨드를 사용하다 보면, 커맨드 라인 치는 부분을 통해 현재 시간이나, 접속한 사용자 이름, 현재 경로 등의 정보를 색깔과 함께 보고 싶을 때가 있습니다. 아무 정보가 없으면 너무 밋밋하기 때문입니다. 어떻게 하는지 알아봅시다. 2. 해결 방법 1) .bashrc 수정 (한 줄 추가) root 계정이라면, /root에 root가 아닌 사용자라면 ~(홈 디렉토리)에서 .bashrc에 아래와 같은 문장을 추가합니다. export PS1="\e[1;37m[\e[36m\D{%Y/%m/%d %H:%M:%S}\e[37m][\e[32m\u\e[31m\e[33m\e[37m]\e[34m\w\e[m\n\$" PS1이라는 환경 변수를 이용해 변경하는 것입니다. 간단히 설명드리자면, [년도/..
Contents 1. 계기 고등학교 때, 우연히 황농문 교수님이 쓰신 "몰입"이라는 책을 읽었습니다. 요지는 아주 어려운 하나의 문제를 계속 생각하고 생각하다 보면, 깊은 몰입 상태가 된다고 합니다. 교수님의 경험에 따르면 "연속해서" 약 50시간 정도 한 문제를 생각하면 깊은 몰입에 들어간다고 합니다. 이때 내 자신의 모든 걸 쏟아붓는 느낌과 함께, 고양감 행복감이 충만하고, 죽을 때까지 이 문제만 생각하고 싶다고 느낀다고 합니다. 1) 몰입 경험 저는 고등학교 3학년 때, 마운트&블레이드라는 게임에 빠졌던 기억이 납니다. 공부를 해야 하는데, 게임을 하니까 그 재미가 배가 되었습니다. 며칠 밤을 새워서 그 게임을 했습니다. 그 게임에 존재하는 시스템을 파악하고, 어떻게 해야 클리어를 할 수 있을지 고..
Contents 1. 문제🔥 링크: https://www.acmicpc.net/problem/11000 첫째 줄에 수업의 개수 N이 주어집니다. 다음으로 N줄에 걸쳐, 각 수업의 시작시간 Si와 끝시간 Ti가 공백을 구분자로 주어집니다. 모든 수업을 가능하게 하는 최소한의 강의실 개수를 출력해야합니다. 1) 예제 입출력❄️ 강의 1 3과 3 5는 끝시간과 시작시간이 같으니 한 교실에서 할 수 있지만, 2 4는 겹치기 때문에 다른 교실에서 해야합니다. 즉, 최소로 교실 2개가 필요하므로, 2를 출력합니다. 2. 핵심 논리☢️ [시작 시간, 끝 시간] 을 원소로 갖는 이중리스트에 대해 오름차순으로 정렬하고, 최소 힙에 끝시간을 저장하고, 시작시간이 끝시간과 겹치는 경우만 heap에 새로 추가하고, 겹치지 않..
Contents 1. 문제🔥 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42747 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 주어집니다. 발표한 논문 n편 중, h번 이상 인용된 논문이 h 편 이상이고, 나머지 논문이 h번 이하 인용되었다는 조건을 만족하는 h의 최댓값을 반환해야 합니다. 1) 예제 입출력❄️ 2. 핵심 논리☢️ citations를 정렬하고, 이분 탐색을 이용해 0부터 citations의 길이만큼 h로 반복하며, 인용횟수가 h 이상인 논문의 개수를 bisect(이분 탐색)을 이용해서 구하는 것이 핵심입니다. (bisect_left는 아래 글에서 개념을 설명하고 있습니다.) 2022.03.26 - [..
Contents 1. 강의 내용 1) RecSys(추천 시스템) 7️⃣ 딥러닝을 이용한 추천 시스템 2 7강에서는 GNN(Graph Neural Network)기반의 추천 시스템 개념과 활용 예시(NCGF), 그리고 GNN의 한계와 이를 극복한 GCN(Graph Convolution Network)과 활용 예시(LightGCN) 그리고, RNN(순환 신경망)을 활용한 추천 시스템 GRU4Rec을 배웠습니다. GNN이란 그래프를 활용한 신경망을 의미합니다. 추천 시스템에서 왜 그래프를 활용했을까요? 그래프만의 자료구조 특징 때문입니다. 그래프틑 노드(정점)과 엣지(간선)으로 이루어진 자료구조입니다. 아래 그림을 보면, 기존의 이미지, 텍스트, 정형 데이터는 격자 형태로 표현이 가능했습니다. 하지만, SNS..
Contents 1. 문제🔥 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42746 요약하자면, 숫자 배열이 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 리턴해야 합니다. 1) 예제 입출력❄️ 첫 번째 예시를 보면, [6, 10, 2]에 대해 [6102, 6210, 1062, 1026, 2610, 2106]와 같은 조합을 만들 수 있고 가장 큰 수는 6210입니다. 이를 문자열 "6210"으로 리턴해야 합니다. 2. 핵심 논리☢️ 숫자는 큰수가큰 수가 앞에 나와야 합니다. 하지만 3과 31중에 31보다 3이 앞에 나와야 더 큰 수가 됩니다. 313보다 331이 더 크기 때문입니다. 즉, 3과 31을 비교할 때는 33..
Contents 1. 문제🔥 링크: https://www.acmicpc.net/problem/1202 요약하자면, 첫줄에 N(보석 개수)와 K(가방 개수)가 주어지고, 다음에 N줄에 걸쳐 보석의 무게(Mi)와 보석의 가겨(Vi)가 주어지며, 다음에 K줄에 걸쳐 각 가방의 허용 무게(Ci)가 주어집니다. 상덕이가 K개의 가방에 대해 각각 허용 무게를 지키며 보석을 훔칠 때, 최대 가격을 구하는 문제입니다. (각 가방엔 보석이 1개만 들어가고, 보석의 무게와 가격은 0이상, 가방의 허용 무게는 1이상 입니다.) 1) 예제 입출력❄️ 첫번째 예제를 보면, 보석은 2개, 가방은 1개. 각 보석의 (무게, 가격)은 (5, 10), (100, 100)이고, 가방 1개의 허용 무게는 11입니다. 가방이 1개이기 때문..
Contents 1. 강의 내용 1) RecSys(추천 시스템) 1️⃣ 추천 시스템 Basic 1 1강에서는 추천 시스템이 무엇이고, 해결하고자 하는 문제가 무엇인지와 추천 시스템을 평가하는 지표를 Offline Test와 Online Test로 나누어 학습하였고, 인기도 기반 추천이 무엇인지 예제와 함께 배웠습니다. 추천 시스템이란 사용자에게 적합한 아이템을 추천해주는 시스템을 의미합니다. 해결하고자 하는 문제는 특정 사용자가 특정 아이템을 소비할 Score를 어떻게 구하냐에 따라 크게 2가지로 나뉩니다. 첫번째는 랭킹 문제로, 사용자에게 적합한 아이템 Top K개를 추천하는 문제입니다. Precision@K, Recall@K, MAP@K, NDCG@K 와 같은 평가지표가 쓰입니다. 두번째는 예측 문제..
Contents 1. 문제🔥 링크: https://school.programmers.co.kr/learn/courses/30/lessons/43162 문제를 요약하자면, 컴퓨터 개수(n)과 각 컴퓨터의 연결 정보(computers)를 줬을 때, 연결 성분의 개수를 출력하는 문제입니다. 1) 예제 입출력❄️ 첫번째 예제를 보겠습니다. n=3으로 컴퓨터는 3대이고, computers는 아래와 같은 형태입니다. [[1,1,0], [1,1,0], [0,0,1]] 이 2차원 배열의 의미는 i행 j열에 1이면 i번 컴퓨터와 j번 컴퓨터는 연결된 것입니다. 즉, 대각 성분은 자기 자신이기 때문에 항상 1이고 그 외에, 1행 2열과 2행 1열이 1로 채워져 있습니다. 즉 1번 컴퓨터와 2번 컴퓨터가 연결된 것입니다. ..
Contents 1. 강의 내용 1) Deep Learning Basic 1️⃣ 딥러닝의 역사 1강에서는 딥러닝분야에서 중요한 덕목과 Key Components와 역사를 배웠습니다. 딥러닝 분야에서 중요한 덕목은 구현 실력과 수학 스킬, 최신 트렌드의 논문을 읽고 이해하는 능력을 나뉜다고 합니다. 딥러닝의 Key Components는 아래 4가지 입니다. 1. Data: 학습 및 테스트할 데이터 2. Model: 학습할 모델 3. Loss Function: 학습에 사용되는 Loss 함수로, 모델을 어떻게 학습할지에 대한 기준입니다. 4. Algorithm: Loss를 최소화하는 알고리즘 ex) Adam Optimizer 딥러닝의 역사는 2012년 부터 2020년까지 딥러닝 분야에서 굵직한 BreakThr..
Contents 네이버 부스트캠프 AI tech 4기 2주 차 회고를 정리하겠습니다. 1. 강의 내용 1) PyTorch 1️⃣ PyTorch 소개 1강에서는 딥러닝 프레임워크의 리더가 PyTorch(Facebook)와 TensoFlow(Google) 2가지라는 것과 이 두 프레임워크의 근본적인 차이점에 대해 배웠습니다. 바로, Computational graph를 그리는 방식의 차이입니다. Computational Graph란 연산 과정을 그래프로 표현한 것입니다. PyTorch는 Dynamic graph 방식으로, 실행 시점에 그래프를 그려갑니다. 반면, TensorFlow는 Define and Run 방식으로 그래프를 먼저 정의하고, 실행합니다. 이로 인해, PyTorch의 코드가 더 파이써닉하고 ..
Contents 1. 문제🔥 링크: https://www.acmicpc.net/problem/1461 요약하자면, 일직선 좌표가 있고, 0 위치에 어질러진 책들을 각각 원래 자리에 가져다 둬야 하는데 최소한으로 움직여야 하고, 최소한의 거리를 출력하는 문제입니다. 주의할 점은 책의 위치는 0이 아니라는 것과 마지막 책을 가져다 두고는 0으로 다시 돌아올 필요가 없다는 점입니다. 1) 예제 입출력❄️ 첫 번째 예제를 보면, 7권을 갔다 놔야 하고, 한 번에 들 수 있는 책은 최대 2권입니다. 다음 줄에 7권에 대해 원래 자리의 좌표가 공백을 구분자로 입력됩니다. 2. 핵심 논리☢️ 핵심은 양수와 음수를 나눠서 리스트에 저장하고, M권씩 묶어서 가져다 두는데, 먼 위치부터 가져다 둬야 한다는 점과 전체 책 ..