728x90

전체 글 137

[백준] 14888 연산자 끼워넣기 파이썬

링크 : www.acmicpc.net/problem/14888 푸는 방법 가능한 연산의 경우를 순서대로 배열해야 되기 때문에, itertools 내부의 permutation(=순열)를 이용합니다. (itertools 라이브러리를 이용하면 편-안하게 다양한 경우의 수를 만들 수 있습니다) 1. 연산자들을 나란히 받아서 하나의 리스트로 합친 후, 다양한 순서 개수를 따져야 하므로 순열로 변환합니다. 2. 경우의 수마다, 하나씩 순차대로 연산을 진행 3. 진행한 값을 최소, 최대값과 비교해가며 갱신한뒤, 마지막으로 출력합니다. import itertools N = int(input()) numbers = list(map(int, input().split())) operators = list(map(int, i..

[백준] 3085 사탕게임 파이썬

링크 : www.acmicpc.net/problem/3085 푸는 방법 1. 입력을 받습니다. 2. 입력된 행렬 N x N 을 하나씩 다 탐색합니다. 3. 캔디를 옮겨보았을 때, 해당 행렬에 연속된 캔디숫자를 세고 반환합니다. 4. 반환한 연속된 캔디 개수를 최대값과 비교하며 갱신합니다. 코드 N = int(input()) candies = ['0' for x in range(N)] for i in range(N): candies[i] = [x for x in input()] def count_candy(x,y): row_count = 0 col_count = 0 max_count = 0 row_start = candies[0][y] col_start = candies[x][0] for i in rang..

[백준] 1912 연속합 파이썬

링크 : www.acmicpc.net/problem/1912 처음엔 쉬운줄 알고, 완전탐색 알고리즘으로 O(N^2)의 시간을 알고리즘을 짰더니 타임아웃 에러로 안 됐었습니다. 다 풀고나서 보니 알고리즘도 썩 좋지 않네요 ㅎㅎ (타임아웃 난 코드) N = int(input()) data_list = list(map(int, input().split()))[:N] sum_list = list() for i in range(N): max_sum = data_list[i] for j in range(1, N): if max_sum < sum(data_list[i:i+j]): max_sum = sum(data_list[i:i + j]) sum_list.append(max_sum) print(max(sum_list..

[백준] 14889 스타트와 링크 파이썬

링크 : www.acmicpc.net/problem/14889 푸는 방법은 다음과 같습니다. 1. 먼저 배열을 입력받습니다 2. 4번줄 cases는 N명을 각각 N/2, N/2로 나누었기 때문에 팀이 생길수 있는 경우의 수를 나열해야 합니다. 경우의 수를 나열하는데에는 itertools 라이브러리를 이용해 편하게 생성하였습니다. 저의 경우는 A팀을 생성하면 , 나머지가 B팀이 되도록 만들었습니다. (6명이라 하면, A팀으로 (0, 2, 4) 가 생성될 경우, 자동으로 B팀은 나머지인 (1,3,5)가 됩니다) 3. 최소격차는 임의로 큰 값을 넣어도 되는데, 행렬 1개의 cell 값이 100을 넘지 않는다길래, N*N*100이 최대값이라 생각하고 이보단 작을 거라 생각한 최대값을 넣었습니다. 4. 9번 줄에..

[Python] 사전(dict)형 정렬하기

dict_info = { 'A' : 65, 'B' :176, 'C' : 30, 'D' :135, 'E' : 50, 'F' :153, 'G' : 90, 'H' :171 } 1. Key 값만 정렬해서 출력 #1. key값만 알파벳 순서대로 정렬 sorted(dict_info) #1-1 역순일 경우, dict_info = sorted(dict_info, reverse=True) 2.Value 값만 정렬해서 출력 # Value의 값을 정렬해서 출력 dict_info = sorted(dict_info.values()) # 역순일 경우 dict_info = sorted(dict_info.values(), reverse=True) 3. Key값을 기준으로 사전형 전체를 출력 #3. Key값을 기준으로 dict를 정렬..

[Python] Albumentations를 이용한 데이터 증강 및 실험

안녕하세요 오늘은 Albumentations 라이브러리를 이용한 Data Augmentation 실험을 해보겠습니다 저는 아래와 같은 설정으로 실험을 진행하였습니다. Object Detection Model : EfficientDet-D2 Epochs : 100 해당 모델은 github.com/rwightman/efficientdet-pytorch 깃허브를 참조해 fine-tuning을 적용시켰습니다. 먼저 데이터로 전투기 1000장을 크롤링하여, 1) 100장 / 900장 2) 10 / 990 장 으로 두개의 폴더를 준비하였습니다. (이미지 크기는 제각각이지만, 블로그 포스팅을 위하여 사이즈를 변경하였습니다) 그리고 데이터를 증강시켜봐야겠죠?? github.com/albumentations-team/a..

[Linux] 터미널 환경에서 google drive 파일 다운받기

리눅스의 터미널 환경에서 코딩 중에 google drive에서 파일을 다운 받고싶었는데 문제가 생겼다. 리눅스에서는 파일을 다운받을 때 wget을 이용하기에 써봤지만, 엉뚱한 이름의 파일만 생성되었다. 검색해본 결과 해결 방법은 아래와 같다. 1. pip install gdown 2. gdown https://drive.google.com/uc?id={file_id} (file_id는 drive 홈페이지에서 생기는 id값) 예시 - google drive 파일이 있는 github 링크 github.com/hzwer/Arxiv2020-RIFE hzwer/arXiv2020-RIFE RIFE: Real-Time Intermediate Flow Estimation for Video Frame Interpolat..

Computer Science/OS 2021.03.09

[Python] GIL 관련 OS, 컴퓨터구조가 중요한 이유

안녕하세요 오늘은 그동안 프로그래밍을 하는 입장에서 하나둘씩 공부해보다가 제가 배운 걸 도움이 될까하여 씁니다. 평소에 단순하게 소규모의 코딩만 하다가 어느 순간 많은 데이터를 다루게 되면 속도 이슈가 나오게 되고, 고민해서 검색해보면 멀티프로세싱, 멀티쓰레드 쓰면 속도가 향상된다는 이야기가 나옵니다. 왜 멀티프로세스, 멀티쓰레드가 빠를까요?? 어떨 때 써야할까요?? 이런 얘기를 하다보면 자연스럽게 운영체제, 컴퓨터구조에 관한 이야기로 빠지게 됩니다. 기본적으로 알아야 할 것은 프로세스와 쓰레드의 차이입니다. 용어 설명부터 들어가보면, 프로세스는 컴퓨터 입장에서 실행되어 돌아가는 프로그램입니다. 쓰레드는 무엇일까요? 쓰레드는 프로세스 내부에서 동작하는 실행하는 흐름의 단위입니다. 프로세스 내부엔 쓰레드가..

[Data Science] matplotplib을 이용한 데이터셋 가시화

1. 이미지를 읽어오는 시간이 느려서 thread를 이용해 동시성을 증가시켰습니다. ( thread가 데이터 개수만큼 생기니 발열 주의 ) 2. 데이터셋마다 평균 표준편차의 값이 다를 수 있으니, np.arange부분의 x축 설정을 주의하셔야합니다. import cv2 import numpy as np import glob import argparse import matplotlib.pyplot as plt from scipy import stats from threading import Thread parser = argparse.ArgumentParser() parser.add_argument('--path', help='input your dataset folder') args = parser.pa..

AI | ML/코드 2021.02.17

[Python] Multiprocessing으로 속도 개선해보기

TL;DR 3줄요약 파이썬은 GIL으로 인해 쓰레드를 사용하는 데 제약이 있다. Multiprocessing이냐 multi thread냐는 상황에 따라 다르다. 병렬처리에서는 for문 구조를 줄이는게 핵심이다. 데이터셋 전처리 작업으로 코딩하는 와중에, 시간이 너무 오래 걸려서 파이썬 병렬처리에 관하여 공부를 많이 했다. 새롭게 알게 된 점은 파이썬에서는 GIL(Global Interpreter Lock) 이라고 하여, 다른 언어들과 다르게 물리적으로는 1프로세스에 1개의 쓰레드만 사용할 수 있다. 이에 대해선 파이썬을 개발한 귀도 반 로섬이 의도적으로 설계한 것이라고 한다. I’d welcome a set of patches into Py3k only if the performance for a sin..

728x90