본문 바로가기
728x90

전체 글348

파이썬 구간 합 구하기 (accumulate) accumulate 누적된 합을 뽑아준다. for문을 활용하여 더해주는 것보다 확실히 빠르다 from itertools import accumulate a = [1,2,3,4,5] accu_a = list(accumulate(a)) print(accu_a) # [1, 3, 6, 10, 15] 2023. 4. 2.
이것이 취업을 위한 코딩 테스트다 CHAPTER 5 DFS/BF 탐색 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 자료구조 데이터를 표현하고 관리하고 처리하기 위한 구조 오버플로 특정한 자료구조가 수용할 수 있는 데이터의 크기를 이미 가득 찬 상태에서 삽입 연산을 수행할 때 발생 즉, 저장 고안을 벗어나 데이터가 넘처흐를 때 발생 언더플로 특정한 자료구조에 데이터가 전혀 들어 있지 않은 상태에서 삭제 연산을 수행하면 데이터가 전혀 없는 상태 DFS Depth-Frist Search 깊이 우선 탐색 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법 Stack O(N) BFS Breadth Frist Search 너비 우선 탐색 가까운 노.. 2023. 3. 24.
[백준] 18405. 경쟁적 전염 - Python (BFS 사용 X) https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 접근법 (X,Y)에 바이러스 i가 전염되었다 == 바이러스 i가 (X,Y)에 가장 먼저 도착하였다. 그러므로, S초 후 (X,Y)에 존재하는 바이러스 == S초 이내에 가장 먼저 도착한 바이러스 i 바이러스 i와 (X,Y)와의 거리를 각각 구한 후 거리가 S 이내이면서 거리가 가장 가깝고 바이러스 번호가 가장 작은 것이 답 코드 import sys input = sy.. 2023. 3. 23.
불균형 데이터 (imbalanced data) 처리를 위한 샘플링 기법 1. 불균형 데이터란 '정상' 범주의 관측치 수와 '이상' 범주의 관측치 수의 차이가 크게 나타나는 경우 클래스 별 관측치의 수가 현저하게 차이가 나는 데이터 문제 정상을 정확히 분류하는 것과 이상을 정확히 분류하는 것 중 일반적으로 이상을 정확히 분류하는 것이 더 중요 불균형한 데이터 세트는 이상 데이터를 정확히 찾아내지 못할 수 있다는 문제점이 존재 2. 불균형 데이터 해결 방안 데이터를 조정해서 해결 샘플링 기법 (Sampling method) 모델을 조정해서 해결 비용 기반 학습 (Cost sensitive learning) 단일 클래스 분류기법 (Novelty detection) 2-1. 샘플링 기법 1) 언더 샘플링 다수 범주의 데이터를 소수 범주의 데이터 수에 맞게 줄이는 샘플링 방식 장점 .. 2023. 3. 22.
이것이 취업을 위한 코딩 테스트다 CHAPTER 4 구현 구현 완전 탐색 모든 경우의 수를 주저 없이 다 계산하는 해결 방법 시뮬레이션 문제에서 제시한 알고리즘을 한단계씩 차례대로 직접 수행 알고리즘 팁 리스트를 여러개 선언하고, 그중에서 크기가 1000만 이상인 리스트가 있다면 메모리 용량 제한으로 문제를 풀 수 없게 되는 경우도 있다는 점을 기억 시간 제한이 1초이고, 데이터의 개수가 100만 개인 문제가 있다면 일반적으로 시간 복잡도 O(NlogN) 이내의 알고리즘을 이용하여 문제를 풀어야 한다. 알고리즘 문제를 풀 때는 확인(탐색)해야 할 전체 데이터의 개수가 100만 개 이하일 때 완전 탐색 사용 문제 2. 왕실의 나이트 ''' Chapter 4. 왕실의 나이트 접근법 1 이동할 수 있는 경우의 수가 8가지 모두 다 확인 ''' import sys i.. 2023. 3. 21.
이것이 취업을 위한 코딩 테스트다 CHAPTER 11 그리디 문제 Q 01. 모험가 길드 ''' Chapter 11. 모험가 길드 접근법 1 공포도가 낮은 모험가부터 그룹을 결성해보기 그룹을 최대한 많이 만들어야하므로 그룹 내 사람 수 가 적어야 함 그룹 결성 조건 == (마지막에 그룹에 들어간 사람의 공포도)가 (그룹 사람 수)보다 작을 때 ''' import sys input = sys.stdin.readline # 모험가의 수 N = int(input()) # 모험가의 공포도 fear = list(map(int,input().split())) fear.sort() answer = 0 cnt = 0 for i in fear: cnt += 1 # 그룹이 결성이 되는가? == 방금 그룹에 들어간 사람의 공포도가 그룹사람수보다 작아야 결성 if cnt >= i: answ.. 2023. 3. 21.
반응형