목록Development/Algorithm & Coding Test (189)
컴공생의 다이어리
[프로그래머스] 역순 정렬하기 - MySQL SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC; https://programmers.co.kr/learn/courses/30/lessons/59035 코딩테스트 연습 - 역순 정렬하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr
[프로그래머스] 모든 레코드 조회하기 - MySQL SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID; https://programmers.co.kr/learn/courses/30/lessons/59034 코딩테스트 연습 - 모든 레코드 조회하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr
재귀 함수(Recursive Function)란? 재귀 함수란 자기 자신을 다시 호출하는 함수를 의미한다. 아래의 재귀 함수를 실행시키면 '나는 재귀함수~'를 계속해서 출력하다가 어느 순간 오류가 나서 멈출 것이다. def recursive_factorial(): print('나는 재귀함수~') recursive_factorial() recursive_factorial() 재귀 함수를 무한히 사용하는 것은 오류를 발생시킬 수 있으므로 재귀 함수가 언제 끝날지, 종료 조건을 명시해줘야 한다. 예를 들어 위의 재귀 함수가 10번만 실행시키고 종료시키려면 아래와 같이 함수를 수정하면 된다. def recursive_factorial(i): if i == 10 : return print(i, '번째 재귀함수에서..
큐(Queue) 큐는 대기줄과 유사하다. 맛집의 줄을 서 있는 사람들이 있다고 할 때, 제일 먼저 들어갈 수 있는 사람은 먼저 온 사람이다(이때, 새치기는 없음). 나중에 줄을 선 사람은 마지막에 식당에 들어간다. 이러한 구조를 선입선출(FIFO, First In First Out)구조라고 한다. 파이썬 큐 예제 from collections import deque # 큐 구현을 위해 deque 라이브러리 사용 queue = deque() queue.append(5) queue.append(1) queue.append(4) queue.popleft()# 제일 앞에 있는 원소(5) 제거 queue.append(7) queue.append(2) queue.popleft() queue.append(3) pri..
스택(Stack) 스택은 박스 쌓기와 유사하다. 박스는 아래에서부터 위로 차곡차곡 쌓고 이를 치우기 위해서는 위에서부터 하나씩 들어서 옮긴다. 이러한 구조를 선입후출(FILO, First In Last Out) 혹은 후입선출(LIFO, Last In First Out)구조라고 한다. 파이썬 스택 예제 stack = [] stack.append(5) stack.append(2) stack.append(3) stack.pop() stack.append(1) stack.pop() stack.append(4) print(stack)# 최하단 원소부터 출력 print(stack[::-1]) # 최상단 원소부터 출력 https://gohighbrow.com/stacks-and-queues/ Computer scie..
선택 정렬(Selection Sort) 선택 정렬은 버블 정렬(Bubble Sort)과 유사한 알고리즘이다. 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘이다. 정렬 과정 1. 우선, 위치(index)를 선택한다. 2. i+1번째 원소부터 선택한 위치(index)의 값과 비교를 시작 3. 오름차순이므로 현재 선택한 자리에 있는 값보다 순회하고 있는 값이 작다면, 위치(index)를 갱신 4. 2번 반복문이 끝난 뒤에는 min_index에 1번에서 선택한 위치(index)에 들어가야 하는 값의 위치(index)를 갖고 있으므로 서로 교환(swap) 파이썬 코드 def selection_sort(arr): for i in range(len(arr)-1): min_i..
거품 정렬(Bubble Sort) 거품 정렬은 버블 정렬이라고도 불리는 알고리즘이다. 거품 정렬은 두 인접한 데이터의 대소를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 정렬 알고리즘이다. 이름의 유래로는 정렬 과정에서 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어졌다고 한다. 정렬 과정 1회전에 첫번째 원소와 두번째 원소를 비교, 두번째 원소와 세번째 원소를 비교, ... (마지막-1)번째 원소와 마지막 원소의 대소를 비교하며 정렬 1회전을 수행하고 나면 가장 큰 원소가 맨 뒤로 이동한다. 따라서 2회전에서는 맨 마지막 원소를 제외하고 1번 과정을 다시 수행하여 두번째로 큰 수를 맨 뒤에서 두번째로 정렬한다. 이렇게 정렬을 1회전씩 수행하다 보면 모..
백준 5585번 : 거스름돈 (문제 바로가기) 내 코드 n = 1000 - int(input()) coins = (500,100,50,10,5,1) count = 0 for coin in coins: count += n//coin n%=coin print(count)
백준 11399번 : ATM (문제 바로가기) 내 코드 import sys n = int(input()) L = list(map(int,sys.stdin.readline().strip().split())) L.sort() L_time = [sum(L[:x]) for x in range(1,n+1)] print(sum(L_time))
백준 5635번 : 생일 (문제 바로가기) 내 코드 import sys n = int(input()) info = [] for _ in range(n): info.append(list(map(str,sys.stdin.readline().strip().split()))) info.sort(key = lambda x : (int(x[-1]),int(x[-2]),int(x[-3]))) print(info[-1][0]) print(info[0][0])