전체 글 130

이진 탐색 알고리즘

순차 탐색: 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 이진 탐색: 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 (시작점, 끝점, 중간점을 이용해 탐색 범위를 설정한다.) 단계마다 탐색 범위를 2로 나누는 것과 동일하므로 연산횟수는 log2N에 비례한다. 즉, 시간 복잡도는 O(logN)을 보장한다. # 이진 탐색 소스코드 구현 (재귀 함수) def binary_search(array, target, start, end): if start > end: return None mid = (start + end) // 2 # 찾은 경우 중간점 인덱스 반환 if array[mid] == target: return mid # 중간점의 값보..

Algorithm/algorithm 2022.08.24

[Error] NoPermissions (FileSystemError): Error: EPERM: operation not permitted, open

관리자권한이 필요한 폴더내에 node.js 프로젝트 폴더가 있어서 생기는 에러라고 한다.. (파일 삭제는 됐는데 생성하려니까 저런 문구가 뜨면서 파일 생성이 되지 않는다...) 검색해보니, powershell로 캐시 삭제를 하는 방법도 종종 나오던데,, 해결되지 않았다.😥 cmd를 관리자 권한으로 실행하고 해당 위치로 경로를 이동 후 아래 명령어를 실행한다. code 폴더명 or code (처음에 저렇게 vscode를 실행시켰는데 되지 않았다.. 역시 껐다 키는 것이 방법이 될 때가 맞는건가..) 출처 url: https://pika-chu.tistory.com/229 [Error] EPERM: operation not permitted 관리자권한이 필요한 폴더내에 node.js 프로젝트 폴더가 있어서 ..

Project/Intro 2022.08.23

[프로그래머스] K번째 수

문제 url: https://school.programmers.co.kr/learn/courses/30/lessons/42748?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(array, commands): answer = [] for com in commands: arr = array[com[0]-1:com[1]] arr.sort() answer.append(arr[com[2]-1]) return answer def solution(array, commands): return list(map(lamb..

Algorithm/Problems 2022.08.21

정렬 알고리즘 [선택 정렬, 삽입 정렬, 퀵 정렬, 계수 정렬]

1. 선택 정렬 (selection sort) 첫 번째 값을 두 번째 값부터 마지막 값까지 차례대로 비교해 가장 작은 값을 찾아 첫 번째 값과 자리 변경하고, 두 번째 값을 세 번째 값부터 마지막 값까지 차례대로 비교해 가장 작은 값을 찾아 두 번째 값과 자리 변경.. 이 과정을 반복하며 정렬을 수행한다. 시간복잡도 O(N^2) array = [7,5,9,0,3,1,6,2,4,8] for i in range(len(array)): min_index = i # 가장 작은 원소의 인덱스 for j in range(i+1, len(array)): if array[min_index] > array[j]: min_index = j # 스와프 array[i], array[min_index] = array[min_i..

Algorithm/algorithm 2022.08.16

[프로그래머스] 체육복 (탐욕법 Greedy)

문제 url: https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n, lost, reserve): # 오름차순으로 정렬 lost.sort() reserve.sort() # 차집합을 이용해 여벌옷이 있는데 도난당했을 경우 제외 new_lost = set(lost) - set(reserve) new_reserve = set(reserve) - set(lost) for r in new_reserve: if r - 1 in new..

Algorithm/Problems 2022.08.16

[백준] 2675번 문자열 반복

문제 링크: https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net n = int(input()) for i in range(n): str = input().split() list_s = list(str[1]) num = int(str[0]) # 각 문자 반복 횟수 for j in range(len(list_s)): for k in range(num): print(list_s[j], end="") print() 문자열이 입력된 것을 list로..

Algorithm/Problems 2022.08.11

[프로그래머스] 타겟 넘버 (DFS/BFS)

코딩테스트 공부하기로 마음먹고 처음 풀어본 문제다. 하지만.. 결과는 처.참.했.다. 검색을 해보니 DFS/BFS 문제로 푼다고 한다. 둘 중 스택을 이용한 DFS로 풀이 하는 것으로 이해했고 풀이했다. 문제 2번째 예시인 numbers가 [4,1,2,1] 인 경우를 생각해봤다. def solution(numbers, target): answer = 0 n = len(numbers) # temp, idx 값을 의미 stack = [[numbers[0], 0], [-1*numbers[0], 0]] while stack: temp, idx = stack.pop() idx += 1 if idx < n: stack.append([temp+numbers[idx], idx]) stack.append([temp-nu..

Algorithm/Problems 2022.08.02

[프로그래머스] 오랜 기간 보호한 동물(2)

SELECT A.ANIMAL_ID, A.NAME FROM ANIMAL_INS A inner join ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID ORDER BY B.DATETIME - A.DATETIME desc limit 2; (입양일 - 보호시작일)이 가장 큰 값이 보호소에서 가장 오랜 기간 보호된 동물이다. DATETIME 끼리 연산을 할 수 있어서 정렬을 - 연산을 이용하여 해주었다. 다른 방법으로, DATEDIFF 함수를 사용하여 계산해 줄 수 있다. DATEDIFF(날짜1,날짜2) = 날짜1 - 날짜2 [실행결과]

Language/SQL 2022.07.13

[Jupyter Notebook] 주피터 노트북 시작 폴더 변경

1. Jupyter Notebook 환경설정 base 1-1. cmd 및 파워쉘 혹은 Anaconda Powershell Prompt 를 실행시켜 명령어 입력 이때, OS가 윈도우인 경우 cmd보다 파워쉘의 명령어가 많고 간혹 명령어가 다른 경우도 있어 cmd에서는 실행되지 않는 경우가 있다고 한다! (본인은 Anaconda Powershell Prompt를 사용했다.) jupyter notebook --generate-config 1-2. 위 실행결과에 나온 경로로 들어가 파일 수정 아래 보이는 파일에서 #c.NotebookApp.notebook_dir= '' 문장을 수정해야 한다. 1-2-1. 파일 우클릭 후 연결 프로그램에서 메모장으로 파일을 연다. 1-2-2. 메모장에서 #c.NotebookApp..

Language/Python 2022.07.06