본문 바로가기

전체 글

stack 1. list 사용하기 stack = [] stack.append() stack.pop() stack[-1] #stack.top() len(stack) #stack.size() 2. deque 사용하기 from collections import deque dq=deque() dq.append() dp.pop() dp.clear() dp.copy() dq.popleft() # 가장 왼쪽 원소 반환 dq.appendleft() # 덱의 가장 왼쪽에 원소 삽입 dp.count(x) #x와 같은 원소의 개수를 계산 더보기
탐색 1. 순차탐색 - 리스트 내 특정 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 - O(N) 2. 이진탐색 - 찾으려는 데이터와 중간 위치 데이터를 반복적으로 비교해서 원하는 데이터를 찾는 방법 - 배열 내 데이터들이 정렬되어있어야 한다. - 확인하는 데이터의 개수가 절반씩 줄어든다는 점에서 O(logN) - 입력 데이터가 2000만을 넘어가면 이진 탐색으로 접근해보기 def binary_search (array,target,start,end): if start > end: return None mid = int((start + end) // 2) if array[mid] == target; return mid elif array[mid] > target: return binary_sear.. 더보기
[Lv2] 튜플(python) 1. 문제 https://programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 2. 구현 과정 1) 문제 내 정의 정리 * 튜플 - 어떤 순서를 따르는 요소들의 모임 - 중복 원소 가능 - 요소끼리의 순서 존재 - 원소 개수는 유한 * {}로 표현할 수 있는 집합 - 중복 원소가 없는 튜플의 원소들을 이용하여 {a1}, {a1,a2}, {a1,a2,a3..} 등으로 표현하는 집.. 더보기
앞으로의 계획 1. 마음 가짐 - 어영부영 어중간하게 1~2년 준비하지 말고 빡세게 해서 6개월 내에 쇼부보게 하자 - 요즘 고민하는 것 자체에 대한 에너지를 많이 쓰는 것 같다. 작게는 내일 출근할때 뭐입지 부터 시작해서... 프로젝트는 어떻게 준비할지, 내 경력은 어떻게 정리해야할지.. 까지 고민이 너무 많아져서 막상 할 일은 못하고 고민만 하다 하루가 끝난다. 사소한 고민이나 의사결정 때문에 스트레스 받지도 말고 에너지를 소모하지도 말자. 그냥 그 에너지로 할 일 하는게 훨씬 낫다ㅠㅠ - 불만을 경계하자. 분명 2~3년 전까지만 해도 어렵거나 힘든일이 있어도 스트레스는 받을지언정, 상황이나 현실에 대해 불만은 딱히 없었던 것 같다. 그런데 요새는 현재 내 처지에 대한 불만, 남들과의 비교에서 오는 자격지심 등 때.. 더보기
입/출력 1. 입력 1) 빠르게 입력받기 - 데이터 개수가 1000만개 이상, 탐색 범위 크기가 1000억 이상이면 sys 라이브러리로 입력을 빠르게 받기 - import sys input_data = sys.stdin.readline().rstrip() 2. 출력 1) sep과 end 조건 - sep : print문의 출력문들 사이 값들 정의 ( default = "") ex) print("I","Like","쿼카",seq = ",") ==> I,Like,쿼카 - end : print문으로 출력 완료 후의 값 정의 (default = \n) ex) print(array,end = "!") ==> [1,2,3]! 2) format - 특정 서식에 따라 문자를 출력 - print( "{0}월 {1}일 입니다.".f.. 더보기
vim 기본 명령어 정리 1. 이동 - h,j,k,l : h(좌), j(아래),k(위),l(우) - 0 : 줄의 맨 앞 - shift + 4($) : 줄의 맨 끝 - gg: 문서의 맨 처음 - shift + g(G) : 문서의 맨 끝 - w : 한 단어 앞 - b : 한 단어 뒤 - f : 한 페이지 다운 (page down) - u : 한 페이지 위(page up) 2. 수정 - dd : 한 줄 삭제(및 잘라내기) - dw : 한 단어 삭제 - dx : 한 글자 삭제 - yy : 한 줄 복사 - p : 붙여넣기 - cw: 한 단어 삭제 후 편집모드 - cx : 한 글자 삭제 후 편집모드 3. 검색 - /단어이름 : 단어 찾기 ( n : 다음 찾기, shift + n : 이전 찾기 ) - :%s/[찾을문자열]/[바꿀문자열]: 단.. 더보기
[2110] 공유기 설치(python) 1. 문제 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 2. 구현 과정 - 읽을 수록 헷갈려서 문제를 이해하는데 오래걸렸다. 인접한 공유기의 최대거리? 가 어떤 의미인지를 빨리 이해하는 게 중요한 것 같다. - 맨 처음 완전 탐색으로 전체 N개 중 C개를 조합으로 구한 후, 가장 먼 거리를 구하려 했는데, 시간 초과가 난다. -> 파이썬 기준 2초 : 약 4000만 연산. nC2만 해도 2.. 더보기
정렬 0.정렬 - 데이터를 특정한 기준에 따라서 순서대로 나열하는 것 - 삽입 정렬, 퀵 정렬, 계수 정렬 1. 선택 정렬 - 가장 작은 데이터를 선택해서 맨 앞에 있는 데이터와 바꾸고, 그 다음 작은 데이터를 앞에서 두번째 데이터와 바꾸는 과정을 반복하는 정렬 - 최악의 경우 : 데이터가 내림차순으로 있는 경우 - 시간 복잡도 : N + (N-1) + (N-2) + ...+ 1 = N *(N+1) / 2 = 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]: .. 더보기