no image
[FSDL 정리] 머신러닝 프로젝트 진행 시 고려 사항
Full Stack Deep Learning - Lecture 1: Course Vision and When to Use ML Introduction to planning, developing, and shipping ML-powered products. fullstackdeeplearning.com 모든 사진과 글은 위 링크를 참고했습니다. ML은 언제 활용해야 할까 머신러닝 프로젝트는 연구적 성향이 강하기 때문에 다른 소프트웨어 프로젝트와 비교 했을 때 실패 확률이 높다. 또한 많은 양의 데이터를 처리하기 위해 시스템이 복잡해져 유지 보수 과정에 큰 비용이 든다. 따라서 머신 러닝을 프로젝트에 도입하기 전엔, 다음과 같은 사항을 고려해 정말 필요한 지 따져 보고 도입하는 것이 중요하다. 정말 사용할 ..
2022.12.18
no image
Statistical Estimator(통계적 추정량)의 특성 알아보기
Estimator(추정량)이란? 추정량은 추정과 관련된 값이다. 그래서 우선 추정에 대해서 간단하게 알아보자. 추정은 표본을 활용해 모집단의 특성을 나타내는 값인, 모수(Parameter)를 추측하는 과정을 의미한다. 추정엔 특정한 값을 추측하는 점 추정과, 점 추정의 변동을 고려해 모수를 포함할 가능성이 높은 구간을 추측하는 구간 추정이 있다. 이러한 추정엔 결국 기준이 되는 값이 필요한데, 그것을 바로 추정량이라고 부른다. 추정은 다양한 추정량 중, 어떤 추정량을 활용할 것인지가 중요하고, 이에 따라 바람직한 추정량의 특성 또한 존재한다. 일반적으로 사용하면 좋은, 바람직한 추정량의 특성으로 Unbiasedness(불편성), Efficiency(효율성), Consistency(일치성), Suffici..
2022.11.30
no image
[파이썬] 백준 연산자 끼워넣기
14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 나의 풀이 +, -,*, / 연산자 각 원소의 개수에 맞춰서 인덱스 리스트를 만들어서 저장했다. 이후 인덱스 리스트로 순열을 만들어서 완전 탐색을 진행해서 풀었다. 순열을 직접 구현하고 사용해보려고 이런 방식으로 풀었는데, itertools의 permutations 함수를 사용하면 통과가 되지만 구현한 수열 함수로는 시간 초과가 발생한다. def get_perm(arr, n): perm_list = [] # ..
2022.11.11
no image
[파이썬] 순열과 조합 직접 구현하기
조합 def get_comb(arr, n): comb_list = [] # 종료 조건 if n == 0: return [[]] # 현재 arr의 담긴 수를 확인 for i in range(len(arr)): # 선택된 수 num = arr[i] # 나머지 수로 구성된 배열 arr_left = arr[i+1:] for comb in get_comb(arr_left, n - 1): comb_list.append([num] + comb) return comb_list 순열 def get_perm(arr, n): perm_list = [] # 종료 조건 if n == 0: return [[]] # 현재 arr의 담긴 수를 확인 for i in range(len(arr)): # 선택된 수 num = arr[i] ..
2022.11.11
no image
[파이썬] 백준 퇴사
14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 나의 풀이 오랜만에 푸는 DP 문제이다. 고민하다가 못 풀어서 결국 풀이를 참고했다. 각 날짜 별 최대 이윤을 DP 테이블로 구성하고, 최대 이윤 값을 얻을 땐 뒤쪽 날짜부터 거꾸로 진행해서 계산해야 한다. 이렇게 되면 DP[i] = max(현재 상담 일자의 최대 이윤 + 현재 상담이 끝난 후를 기준으로 한 최대 이윤, 기존 최댓값)으로 표현이 가능하다. n = int(input()) # 전체 상담 개수 t_list = [] # 상담 완료까지 기간 p_list = [] # 상담 완료 시 받을 수 있는 금액 dp = [0] * (n + 1) max_value = 0 for _ in range(n): t..
2022.11.10
no image
[파이썬] 백준 시험감독
13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 나의 풀이 우선 총 감독을 1명씩 배치하고, 이후 보조 감독을 배치했다. 보조 감독 배치는 몫의 값 만큼 진행하고, 나머지가 0이 아닌 경우 1명씩 추가로 배지했다. import sys N = int(input()) A_list = list(map(int, sys.stdin.readline().split())) B, C = map(int, input().split()) # 총 감독 배치 answer = 0 ..
2022.11.08
SQL 테스트 대비
기본 연산 [ic]SUM[/ic], [ic]COUNT[/ic], [ic]AVG[/ic] : 합, 개수, 평균 [ic]ROUND[/ic](숫자, 반올림할 자릿수) : 자릿수를 기준으로 반올림 [ic]TRUNCATE[/ic](숫자, 버림할 자릿수) : 자릿수를 기준으로 버림 [ic]CEIL[/ic], [ic]FLOOR[/ic] : 정수화(올림, 버림) [ic]POW[/ic], [ic]SQRT[/ic] : 거듭 제곱, 제곱근 The Blunder | HackerRank Query the amount of error in Sam's result, rounded up to the next integer. www.hackerrank.com SELECT CEIL(AVG(SALARY) - AVG(REPLACE(CAST..
2022.11.04
no image
[파이썬] 프로그래머스 주식가격
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 완전 탐색으로 풀면 시간 복잡도가 $O(N^2)$이기 때문에, 다른 방법으로 접근했다. 우선, 가격이 떨어지지 않는 경우를 가정해서 초기 [ic]answer[/ic]를 설정했다. 이후 가격이 떨어진다면, 현재 시간과 해당 prices 값이 입력된 시간 사이 차이를 계산해 answer 값을 수정해야 했다. '어떻게 구하지?'라고 고민하다가 결국 다른 사람 풀이를 참고했다. # 가격이 떨어지지 않은 기간 # '초기화 - 갱신'을 어떤 방식으로 할 지 고민 # [1] -> [1, 2] -> [..
2022.11.04
no image
[파이썬] 프로그래머스 다리를 지나는 트럭
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 트럭이 진입한 시간, 다리 위에서의 무게를 계산하는 과정에서 pop(0)가 많이 발생하므로 Queue를 활용했다. 트럭이 막 진입한 시간을 0초, 진입 후에 1초가 된다는 생각으로 answer 값을 활용했다. from collections import deque def solution(bridge_length, weight, truck_weights): truck_weights = deque(truck_weights) # 다리에 트럭이 진입한 시간 time_list = deque() # 현재 다리 ..
2022.11.04
no image
[파이썬] 프로그래머스 프린터
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 원하는 location이 나올 때까지, 프린터 대기 목록을 수정하고, 위치 정보를 유지하는 것이 핵심이다. 이를 위해서 [ic]priorities[/ic]와 [ic]location[/ic] 정보를 각각 queue에 담아 처리했다. from collections import deque def solution(priorities, location): # 위치 / 우선 순위 저장 queue = deque(range(len(priorities))) priorities = deque(priorities) a..
2022.11.03
no image
[파이썬] 프로그래머스 기능 개발
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 배포 완료된 경우, pop(0)를 실행해야 하기 때문에 stack 대신 queue를 활용했다. 돌아보면 배포 가능한 프로그램을 굳이 담아둘 필요가 없었다. from collections import deque def solution(progresses, speeds): # 배포 / 개발 속도 progresses = deque(progresses) speeds = deque(speeds) answer = [] deploy_list = [] while progresses: # 하루 작업 진행 for i..
2022.11.01
no image
[파이썬] 프로그래머스 올바른 괄호
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 [ic]([/ic] 괄호가 나올 때만 스택에 저장해뒀다가, [ic])[/ic] 괄호가 나오면 pop()을 진행해 제거했다. pop() 과정에서 런타임 오류가 발생하지 않도록, 짝이 불가능한 경우 False를 바로 반환했다. def solution(s): # 짝 확인 stack = [] for char in s: if char == "(": stack.append(char) else: # 짝 불가능 if len(stack) == 0: return False else: stack.pop() return..
2022.11.01