Study
-
스터디 요일이 매주 화요일이기 때문에 연휴에도 하나쯤 포스팅해 두어야할 것 같아 올리는 버블 정렬 알고리즘입니다. 티스토리 블로그 시작 전에 문제를 풀어본 주제였지만 가볍게 내용 정리 차원에서 올려봅니다! 1. 버블 정렬이란? 먼저 정렬이란, 어떤 데이터의 순서를 정해진 규칙대로 나열하는 것입니다. 정렬에 관한 알고리즘은 다양하고 각 알고리즘마다 작동 방식의 효율이 다르기 때문에 종류와 특징에 대해 잘 알고 있어야 효율적인 알고리즘 구현을 할 수 있습니다. 버블 정렬 Bubble sort이란 두 인접한 데이터를 비교해서 앞에 있는 데이터가 뒤에 있는 데이터보다 클 경우 순서를 바꿔주는 알고리즘입니다. 버블 정렬이 진행되는 동안, 숫자가 큰 순서대로 뒤에서부터 배열되는 특징이 있습니다. 2. 시간 복잡도 ..
[알고리즘] 버블 정렬 Bubble sort스터디 요일이 매주 화요일이기 때문에 연휴에도 하나쯤 포스팅해 두어야할 것 같아 올리는 버블 정렬 알고리즘입니다. 티스토리 블로그 시작 전에 문제를 풀어본 주제였지만 가볍게 내용 정리 차원에서 올려봅니다! 1. 버블 정렬이란? 먼저 정렬이란, 어떤 데이터의 순서를 정해진 규칙대로 나열하는 것입니다. 정렬에 관한 알고리즘은 다양하고 각 알고리즘마다 작동 방식의 효율이 다르기 때문에 종류와 특징에 대해 잘 알고 있어야 효율적인 알고리즘 구현을 할 수 있습니다. 버블 정렬 Bubble sort이란 두 인접한 데이터를 비교해서 앞에 있는 데이터가 뒤에 있는 데이터보다 클 경우 순서를 바꿔주는 알고리즘입니다. 버블 정렬이 진행되는 동안, 숫자가 큰 순서대로 뒤에서부터 배열되는 특징이 있습니다. 2. 시간 복잡도 ..
2022.09.09 -
1. 이진 탐색이란 정렬된 데이터로부터 효과적으로 타겟을 찾을 수 있는 알고리즘입니다. 탐색할 자료를 둘로 나누어 찾는 데이터가 있는지 없는지 확인하기 때문에, 데이터가 정렬되어 있을 때 순차 탐색 sequential search보다 훨씬 빠르게 찾을 수 있습니다. 특정 범위 내에서 숫자를 추측하는 guessing game등을 할 때 필승할 수 있는 방법입니다. 이진 탐색은 분할 정복 알고리즘의 일종이기도 합니다. 1부터 71까지 랜덤하게 존재하는 숫자 배열로부터 7을 찾는 제일 효율적인 방법으로 시각화하면 아래 그림과 같습니다. 분할 정복 알고리즘 divide and conquer이란, 문제를 하나 또는 둘 이상으로 나누어 문제를 해결하는 알고리즘입니다. 나눠진 문제가 충분히 작은 상태에서 해결이 가능..
[알고리즘] 이진 탐색 Binary search1. 이진 탐색이란 정렬된 데이터로부터 효과적으로 타겟을 찾을 수 있는 알고리즘입니다. 탐색할 자료를 둘로 나누어 찾는 데이터가 있는지 없는지 확인하기 때문에, 데이터가 정렬되어 있을 때 순차 탐색 sequential search보다 훨씬 빠르게 찾을 수 있습니다. 특정 범위 내에서 숫자를 추측하는 guessing game등을 할 때 필승할 수 있는 방법입니다. 이진 탐색은 분할 정복 알고리즘의 일종이기도 합니다. 1부터 71까지 랜덤하게 존재하는 숫자 배열로부터 7을 찾는 제일 효율적인 방법으로 시각화하면 아래 그림과 같습니다. 분할 정복 알고리즘 divide and conquer이란, 문제를 하나 또는 둘 이상으로 나누어 문제를 해결하는 알고리즘입니다. 나눠진 문제가 충분히 작은 상태에서 해결이 가능..
2022.09.07 -
MLops 수업 녹화본을 틈틈이 들으며 따라가고 있는데 에러를 안마주치면 섭섭하죠. black 이 cannot import name 'ParameterSource' from 'click.core' 를 띄우며 안돌아갑니다. 구글링해보니 'click'이 없거나 구버전이라서 생기는 오류라고 합니다. 저는 처음에 없는 줄 알고 설치했습니다. $ pip install click Requirement already satisfied: click in /Users/krc/miniforge3/envs/dua/lib/python3.9/site-packages (7.1.2) 엥? 근데 있다고 합니다. pip uninstall click을 해도 7.1.2 버전이 사라지지 않길래, 직접 저 경로로 들어가서 삭제해 준 후 재설..
[해결] black 사용 시 cannot import name 'ParameterSource' from 'click.core'MLops 수업 녹화본을 틈틈이 들으며 따라가고 있는데 에러를 안마주치면 섭섭하죠. black 이 cannot import name 'ParameterSource' from 'click.core' 를 띄우며 안돌아갑니다. 구글링해보니 'click'이 없거나 구버전이라서 생기는 오류라고 합니다. 저는 처음에 없는 줄 알고 설치했습니다. $ pip install click Requirement already satisfied: click in /Users/krc/miniforge3/envs/dua/lib/python3.9/site-packages (7.1.2) 엥? 근데 있다고 합니다. pip uninstall click을 해도 7.1.2 버전이 사라지지 않길래, 직접 저 경로로 들어가서 삭제해 준 후 재설..
2022.09.06 -
원래는 강의장에 거의 매일 9-9으로 지내면서 노트북의 필요성을 못느꼈는데, 프로젝트를 시작하면서+코로나 격리 기간에 강의장(iMac)과 같은 환경의 노트북의 필요성을 강하게 깨닫고 결국 맥북 프로를 질렀습니다^^! 초반 환경 구성은 이 블로그를 참고했습니다만 wandb를 설치하다가 캡쳐와 같은 에러를 마주하게 되었는데요 mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e') 구글링을 해보니 pip가 말고 conda로 설치하라는 조언이 있어서 아래와 같이 삭제 후 재설치하여 해결했습니다. 나중에 경험치가 쌓이면 왜 pip는 안되고 conda는 되는지 알 수 있을까요..? 지금은 맞고 그때는 틀리다도 아니고 M1은 언제..
[wandb] 맥북 M1에서 wandb 설치 오류 해결하기원래는 강의장에 거의 매일 9-9으로 지내면서 노트북의 필요성을 못느꼈는데, 프로젝트를 시작하면서+코로나 격리 기간에 강의장(iMac)과 같은 환경의 노트북의 필요성을 강하게 깨닫고 결국 맥북 프로를 질렀습니다^^! 초반 환경 구성은 이 블로그를 참고했습니다만 wandb를 설치하다가 캡쳐와 같은 에러를 마주하게 되었는데요 mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e') 구글링을 해보니 pip가 말고 conda로 설치하라는 조언이 있어서 아래와 같이 삭제 후 재설치하여 해결했습니다. 나중에 경험치가 쌓이면 왜 pip는 안되고 conda는 되는지 알 수 있을까요..? 지금은 맞고 그때는 틀리다도 아니고 M1은 언제..
2022.09.03 -
1. 그리디 알고리즘이란? 매순간 최적이라고 생각하는 경우를 선택하는 알고리즘입니다. 'greedy' 혹은 탐욕 이라고 이름이 붙은 이유는 전체적인 맥락에서의 최적과 각 순간(locally)에서 최적이라고 생각되는 경우가 다를 수도 있기 때문입니다. 그리디 알고리즘에서는 지나간 선택 중에서 혹시 더 좋은 경우의 수가 있었는지 돌아보지 않는다는 점이 동적 프로그래밍과 다른 점입니다. 2. 한계 '각 단계'에서의 최선을 선택하기 때문에 반드시 최적의 해를 구할 수 있는 것은 아닙니다. 따라서 overall optimal option 보다는 최적에 가장 가까운 값을 구하기 위해 사용하는 알고리즘입니다. 최적의 답을 구해주지 않는다면 왜 그리디 알고리즘을 활용할까요? 그 이유는 시간 절약 때문입니다. 더 적은 ..
[알고리즘] 탐욕 알고리즘 Greedy algorithm1. 그리디 알고리즘이란? 매순간 최적이라고 생각하는 경우를 선택하는 알고리즘입니다. 'greedy' 혹은 탐욕 이라고 이름이 붙은 이유는 전체적인 맥락에서의 최적과 각 순간(locally)에서 최적이라고 생각되는 경우가 다를 수도 있기 때문입니다. 그리디 알고리즘에서는 지나간 선택 중에서 혹시 더 좋은 경우의 수가 있었는지 돌아보지 않는다는 점이 동적 프로그래밍과 다른 점입니다. 2. 한계 '각 단계'에서의 최선을 선택하기 때문에 반드시 최적의 해를 구할 수 있는 것은 아닙니다. 따라서 overall optimal option 보다는 최적에 가장 가까운 값을 구하기 위해 사용하는 알고리즘입니다. 최적의 답을 구해주지 않는다면 왜 그리디 알고리즘을 활용할까요? 그 이유는 시간 절약 때문입니다. 더 적은 ..
2022.08.31 -
Hadoop&Hive 강의를 시작하기 전 AWS 에서 인스턴스를 생성하고, aws 서버에서의 shell programming을 위한 리눅스 기초에 대해 배웠습니다. 1. 기본 명령어 - 파일 생성 및 생성된 파일 확인하기 $ #optional $ sudo apt install tree #설치 시 tree 구조를 확인할 수 있음 $ touch hello.txt #파일 생성 $ echo #파일 내용 확인 $ ls #디렉토리 내 파일 리스트 확인 $ ls -l $ ls -a $ cat
[리눅스] basic - 명령어Hadoop&Hive 강의를 시작하기 전 AWS 에서 인스턴스를 생성하고, aws 서버에서의 shell programming을 위한 리눅스 기초에 대해 배웠습니다. 1. 기본 명령어 - 파일 생성 및 생성된 파일 확인하기 $ #optional $ sudo apt install tree #설치 시 tree 구조를 확인할 수 있음 $ touch hello.txt #파일 생성 $ echo #파일 내용 확인 $ ls #디렉토리 내 파일 리스트 확인 $ ls -l $ ls -a $ cat
2022.08.30 -
그래프에서 '탐색'이란 노드를 순회하는 것을 말합니다. 영어로는 graph traversal이라고 합니다. 노드의 탐색 알고리즘 중 가장 대표적인 두 가지는 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)입니다. 아래 예제 그래프를 통해서 탐색 방식이 어떤지 자세히 알아보도록 하겠습니다. 그림은 트리처럼 생겼지만, 그래프 순회 시 cycle을 이루게 하는 edge가 추가되어도 순회하는 데에는 오류가 없을 것입니다. 1. 너비 우선 탐색 breadth-first search : 같은 레벨에 있는 노드, 즉 형제 노드들을 우선으로 순회 그래프의 구현은 딕셔너리로, 탐색 방법은 두 개의 리스트 자료구조를 활용할 수 있습니다. 그래프를 구현한 딕셔너리는 아래와 같이 key에 한 노드를, value에 해당 노..
[알고리즘] 그래프 Graph (2) - BFS&DFS그래프에서 '탐색'이란 노드를 순회하는 것을 말합니다. 영어로는 graph traversal이라고 합니다. 노드의 탐색 알고리즘 중 가장 대표적인 두 가지는 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)입니다. 아래 예제 그래프를 통해서 탐색 방식이 어떤지 자세히 알아보도록 하겠습니다. 그림은 트리처럼 생겼지만, 그래프 순회 시 cycle을 이루게 하는 edge가 추가되어도 순회하는 데에는 오류가 없을 것입니다. 1. 너비 우선 탐색 breadth-first search : 같은 레벨에 있는 노드, 즉 형제 노드들을 우선으로 순회 그래프의 구현은 딕셔너리로, 탐색 방법은 두 개의 리스트 자료구조를 활용할 수 있습니다. 그래프를 구현한 딕셔너리는 아래와 같이 key에 한 노드를, value에 해당 노..
2022.08.23 -
대회 막바지인 8월초 코로나 확진을 받고 이제야 써보는 첫 대회 후기입니다! 주최에서 제공한 대회의 베이스라인 코드는 mmdetection이었지만 사진 데이터가 딱봐도 생산팀의 실제 데이터여서 보안 사항에 민감할 것 같았고 parameter tuning 위주로 진행했기 때문에 깃허브 업로드는 없이, 간략하게 정리해보겠습니다. 1. 개요 주최/주관: LG화학, AIfactory 대회 목표: 각 입자의 형상을 최대한 정확하게 segmentation Problem type: instance segmentation (이미지 내에 존재하는 객체를 탐지하는 동시에 각 class 내에서도 픽셀 단위로 분류 필요) 데이터 종류: 비정형 데이터 (이미지) 조 구성: 3명 Env: python 3.8, torch 1.12..
[AI factory, LG 해커톤] LG입자형태분석 대회 참가 후기대회 막바지인 8월초 코로나 확진을 받고 이제야 써보는 첫 대회 후기입니다! 주최에서 제공한 대회의 베이스라인 코드는 mmdetection이었지만 사진 데이터가 딱봐도 생산팀의 실제 데이터여서 보안 사항에 민감할 것 같았고 parameter tuning 위주로 진행했기 때문에 깃허브 업로드는 없이, 간략하게 정리해보겠습니다. 1. 개요 주최/주관: LG화학, AIfactory 대회 목표: 각 입자의 형상을 최대한 정확하게 segmentation Problem type: instance segmentation (이미지 내에 존재하는 객체를 탐지하는 동시에 각 class 내에서도 픽셀 단위로 분류 필요) 데이터 종류: 비정형 데이터 (이미지) 조 구성: 3명 Env: python 3.8, torch 1.12..
2022.08.15