분류 전체보기 238

백준 1932: 정수 삼각형 (Python)

https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 삼각형을 리스트로 차례대로 입력받은 다음, 인덱스 에러가 나지 않게 거꾸로 for문을 돌려주었다 현재값+최댓값 해서 리스트에 저장해주고 제일 마지막 계산 부분(첫번째 줄)에는 값이 하나밖에 없으니 d[0][0] 출력하면 된다! n = int(input()) d = [list(map(int, input().split())) for _ in range(n)] for i in range(n-2, -1, -1): for j in range(i+1): d[i][j] += max..

알고리즘/백준 2022.04.01

labelImg 이용해서 데이터 만들고 YOLOv5 학습시키기

1. labelImg 실행 2. Open Dir -> 이미지 파일들 저장된 폴더 열기 / Change Save Dir -> 파일 저장할 폴더 지정 3. 처음 작동시키면 yolo 라고 써있는 부분에 PascalVOC 라고 적혀있을텐데 한번 눌러서 yolo로 바꿔주면 된다. 4. 라벨링 시작 - Create RectBox 눌러서 직접 라벨링 해주고 -> class 지정 -> Save 5. 이 과정을 모든 사진에 해주면 됨..^^ 6. yolov5 안에 폴더 하나 만들어서 그 안에 data.yaml 파일, images, labels 폴더를 각각 만들어주자 images -> 라벨링 했던 사진들 labels -> 라벨링 후 생성된 텍스트 파일들 7. data.yaml 파일 train/val: 내가 만든 폴더 경로..

MacOS M1 - labelImg 설치

pip install labelImg pip3 install pipenv pipenv run pip install pyqt5 lxml make qt5py3 labelImg 순서대로 하면 된다는데 온갖 오류 다 뜨면서 안 됨. 그래서 다시 다운.. 그래도 안 됨. 다시 검색.. m1 칩이라 안 되는 듯.. 일단 로제타 터미널 만들어줌 터미널 복제 -> 이름 알아보기 쉽게 바꿔주고 -> 마우스 우클릭 -> 정보 가져오기 -> Rosetta를 사용하여 열기 체크 로제타 터미널 열어서 git clone https://github.com/tzutalin/labelImg.git cd labelImg /usr/bin/python3 -m venv env source env/bin/activate pip install ..

백준 1149: RGB거리 (Python)

https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net n = int(input()) d =[list(map(int, input().split())) for _ in range(n)] for i in range(1, n): d[i][0] += min(d[i-1][1], d[i-1][2]) d[i][1] += min(d[i-1][0], d[i-1][2]) d[i][2] += min(d[i-1][0], d[i-1][1]) print(..

알고리즘/백준 2022.03.30

백준 9461: 파도반 수열 (Python)

https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 무작정 그려놓고 규칙을 찾았다 처음엔 삼각형이 생기는 순서대로 규칙을 계산했다가 [인덱스-2] + [인덱스-3] 으로도 계산이 된다는 걸 찾음 d = [0] * 101 d[1], d[2], d[3] = 1, 1, 1 for i in range(4, 101): d[i] = d[i-2] + d[i-3] t = int(input()) for i in range(t): n = int(input()) print..

알고리즘/백준 2022.03.29

백준 1904: 01타일 (Python)

https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 피보나치 수열이랑 똑같은 간단한 문제였다 그러나... 첫 번째 코드 - 메모리 초과 n = int(input()) d = [0] * (n + 1) d[1] = 1 d[2] = 2 for i in range(3, n+1): d[i] = d[i-1] + d[i-2] print(d[n] % 15746) 두 번째 코드 - 나머지 계산을 반복문 안에 넣어줌. 런타임 에러 n이 1일 때 d[2] = 2에서 인덱스..

알고리즘/백준 2022.03.29

백준 1003: 피보나치 함수 (Python)

https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 처음 코드 - 걍 냅다 계산.. 당연히 시간 초과 날 줄 알았음 def fib(n): d = [0] * (n + 1) if n == 0: count[0] += 1 return 1 if n == 1: count[1] += 1 return 1 d[n] = fib(n - 1) + fib(n - 2) return d[n] t = int(input()) for i in range(t): n = int(input()) count = [0, 0] fib(n) print(count[0], count[1]) ..

알고리즘/백준 2022.03.29

YOLOv5 설치

YOLOv3 설치 시도 -> 자꾸 오류 떠서 실패.. # 가상환경에 yolov5 다운 git clone https://github.com/ultralytics/yolov5.git # update conda update -yn base -c defaults conda # install library conda install -c anaconda cython numpy pillow scipy seaborn pandas conda install -c conda-forge matplotlib pyyaml tensorboard tqdm opencv PyTorch 설치는 https://pytorch.kr/get-started/locally/ 내 환경에 맞는 명령어를 입력해주면 된다. 난 맥북이니까 # install..

동적 계획법 (Dynamic Programming)

중복되는 연산을 줄이자 - 어떤 문제는 메모리 공간을 약간 더 사용하면 연산 속도를 비약적으로 증가시킬 수 있는 방법이 있다. - 다이나믹 프로그래밍으로 해결할 수 있는 대표적인 예시로는 피보나치 수열이 있다. - 수학적 점화식을 프로그래밍으로 표현하려면 재귀 함수를 사용하면 간단하다. # 피보나치 함수를 재귀 함수로 구현 def fibo(x): if x == 1 or x == 2: return 1 return fibo(x-1) + fibo(x-2) print(fibo(4)) - 그런데 피보나치 수열의 소스코드를 이렇게 작성하면 심각한 문제가 생길 수 있다. - f(n) 함수에서 n이 커지면 커질수록 수행 시간이 기하급수적으로 늘어나기 때문! -> O(2^N) - 피보나치 수열의 호출 과정을 그림을 그려..

알고리즘/정리 2022.03.21