https://www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net 문제풀이 dfs문제이다. 알맞은 조합을 고르는 법은 다음과 같다. 1 2 3 3 1 2 위 테이블에서 처음 인덱스 1 -> arr[1]은 3 -> 인덱스 3 -> arr[3]은 2 -> 인덱스 2 -> arr[2]는 1 순서로 탐색을 진행한다. 만약 이 때, 처음 인덱스로 돌아온다면 조건을 만족시키도록 수를 뽑을 수 있는 경우인 것이다! 이 경우에는 pivot만을 저장해주고, i를 1..
CSV, HTML, XML, JSON 데이터에 대해 알아보겠다. 1. CSV : comma separate values 쉼표로 구분한 텍스트 파일 엑셀 양식의 데이터를 프로그램에 상관없이 쓰기 위한 데이터 형식! 탭으로 구분 = TSV, 빈칸으로 구분 = SSV 등등이 있는데, 통칭하여 CSV로 부른다! 엑셀에서 "다른 이름으로 저장" 기능을 활용하여 만들 수 있다. 파이썬으로 CSV 파일 읽기/쓰기 -> 앞서 포스팅한 file handing에서 소개한 모듈, 함수 등을 이용하면 된다! CSV는 쉼표로 구분된 파일이므로 한 줄씩 읽어올 때 유의할 점이 있다. 쉼표를 포함하여 읽어오므로 이를 없애주는 전처리 과정이 필요하다! -> 직접 코드로 할 수도 있지만, 파이썬에서는 CSV 파일 처리를 위한 ..
프로그램을 짤 때는 예상치못한 여러 일들이 일어난다. ex) 주소 입력하지 않고 주문 1. exception 1. 예상 가능한 것 (인터럽트와 유사) -> 주소를 입력하지 않을 수 있으니 주소가 빈칸이 되는걸 막자! 2. 예상 불가능 한 것 (트랩과 유사) -> 리스트 범위 초과, 0으로 나누기 등등 -> exception handing 필요! try ~ expect 문법 (try ~ catch 라고도 한다) for i in range(10): try: res = 10 // i; except ZeroDivisionError: print("Not divided by 0"); if문과 유사하지만, 에러를 잡고나서 프로그램을 종료하는 것이 아니라 예외처리 후 계속 실행할 수 있다는 장점이 있다. 그..
파이썬에서는 대부분의 라이브러리가 이미 다른 사용자에 의해 구현이 되어있다! 우리는 주로 이 라이브러리들을 불러와 사용할 것이다. 모듈 : 작은 프로그램 조각들 모듈은 패키지 안에 들어가 있다. 어떤 대상의 부분 혹은 조각인데, 레고 블록 또는 자동차 부품들이라고 생각하면 쉽다. 이들 하나도 어떤 기능을 하지만, 모아서 하나의 큰 프로그램을 개발하는데 유용하다. 하나의 큰 프로그램을 프로젝트(=패키지)라 부른다. 잘 모듈화 시키면 다른 프로그램에서 가져다 쓰기 좋다! API와 유사한 개념! 파이썬에서 Module py파일을 의미한다 import를 사용해서 module을 호출한다! -> 임포트하면 호출한 파일 내로 메모리가 로딩 됨 = 가져다 쓸 수 있다 -> 같은 디렉토리 내부에 있어야 사용가..
객체 지향 언어를 사용하는 이유? 구조화! 다른 사람이 만들어놓은 코드 또는, 여럿이서 공동 개발할 때, 혼자서 개발할 때도 객체 지향적으로 하는 것이 좋다. 객체란? 실생활 속 일종의 물건, 속성(attribute)와 행동(action)을 가진다 ex) 인공지능 축구 프로그램에서 객체는 팀, 선수, 심판, 공 등 OOP는 클래스와 인스턴스로 나뉜다. ex) 클래스 - 붕어빵 틀, 인스턴스 - 붕어빵 -> 도커에서 이미지와 컨테이너의 차이와 비슷하다! OOP 설계 방법 1. class 선언 -> class + 이름 + (상속받을 클래스) + : ※ naming rule은 snake_case와 CamelCase가 있다. 주로 클래스명에서는 대문자를 사용하고, 변수명에서는 언더바("_")를 사..
이제 다시 darknet 디렉토리로 돌아와서, mkdir custom_data 사용할 폴더를 하나 만들어준다. custom_data/custom.names custom_data/images custom_data/train.txt (= text.txt) custom_data/custom.data 폴더에는 위 4개의 파일이 필요하다. 우선, 1. 첫번째 names 파일은 이전 포스팅에서 convert2Yolo 하는 과정에서 만들어 준 것을 해당 폴더로 mv 명령어를 통해 옮긴다. 2. 두번째 images폴더는 이미지파일(jpg)과 annotation(txt파일)이 같은 파일명으로 존재해야 폴더이다. 예를들면 000038_cam.jpg, 000028_cam.txt가 세트로 존재해야 한다. a..