목록✅🌲강의 복습 노트 (59)
컴퓨터공학 💻 도서관📚
큐 : 터널, 주유소 큐는 먼저 들어온 데이터가 먼저 나간다 파이썬 큐 : 리스트도 기능적으로는 구현할 수 있지만 시간복잡도가 더 높아서 비효율적임, 덱 / deque 라이브러리 쓰셈 리스트로 큐를 구현할 시pop함수를 사용하면 원소를 꺼낸 뒤 원소의 위치를 조정하는 과정이 필요해서원소를 꺼내는 연산 자체가 O(K)만큼의 시간복잡도가 요구된다. 그래서 비효울적이다. append, popleft 함수 여기서 append 함수는 파이썬 내장함수 append함수와 똑같이 구동하기 때문에 요소를 오른쪽 끝에 추가한다. 그렇기 때문에 삭제하는 함수가 왼쪽부터 삭제하는 popleft 이다. 그래서 우리가 익숙한 순서로 출력하려면 역순으로 바꾸고 출력한다 C++ 큐 : push, pop, ..
스택 : 프링글스 통스택은 먼저 들어온 데이터가 나중에 나간다 파이썬 스택 : 리스트와 파이썬 내장함수 append, pop 사용 C++ 스택 : 라이브러리 활용해서 push, pop, top 함수 사용이 코드에서는 top을 출력하고 삭제하고 다음 top을 출력하고 삭제하는 식으로 스택 출력을 했다. 자바 스택 : 라이브러리 활용해서 push, pop, peek 함수 사용 이 코드에서는 top을 출력하고 삭제하고 다음 top을 출력하고 삭제하는 식으로 스택 출력을 했다.
data = input()result = []value = 0# for + 리스트 연계 패턴 : 리스트의 각 요소를 확인해야 할 때for x in data: if x.isalpha(): # 파이썬 내장함수, 설명은 밑에 result.append(x) else: value += int(x)result.sort()if value != 0: result.append(str(value)) # 이런거 까먹지 말기 # 그냥 출력하면 리스트의 형태로 출력되는데print(''.join(result)) # join함수가 문자열의 형태로 바꿔준다 for + 리스트 연계 패턴 : for x in data:리스트의 각 ..
완전 탐색 유형 문제 input_data = input()row = int(input_data[1])column = int(ord(input_data[0])) - int(ord('a')) + 1 # 문자를 숫자로 바꾸는 테크닉# 완전탐색 유형 , # 나이트가 이동할 수 있는 8가지 방향 정의 , # 리스트 안에 있는 튜플steps = [ (-2,-1), (-1, -2), (1, -2), (2, -1), (2, 1), (1,2), (-1, 2), (-2, 1)]result = 0for step in steps: # for + 리스트 연계 next_row = row + step[0] next_column = column + step[1] if nex..
완전 탐색(Brute Forcing) 문제 유형 : 가능한 경우의 수를 모두 검사해보는 탐색 방법 파이썬h = int(input())count = 0for i in range(h + 1): # i는 0 ~ h 까지 for j in range(60): for k in range(60): if '3' in str(i) + str(j) + str(k): # in의 활용법 + str()함수 활용법 + 문자이므로 '+'기호 활용 count += 1print(count) C++ / Java 파이썬을 제외한 다른 언어에서는 3이 있는지 확인하는 코드를 따로 함수로 정의한다 함수에서는 2가지를 검사한다 1. 십의 자리에 3이 있는 경우..
n = int(input())x,y = 1, 1 # 이렇게 초기화하는 것도 가능하구나!plans = input().split() # 한 줄에 여러 문자를 입력받기dx = [0, 0, -1, 1] # 왼쪽부터 차례대로 L, R, U, Ddy = [-1, 1, 0, 0]move_types = ['L', 'R', 'U', 'D']for plan in plans: for i in range(len(move_types)): if plan == move_types[i]: # 같은 인덱스 번호로 저장했음을 이용 nx = x + dx[i] # 방향벡터 ny = y + dy[i] if nx n or ny > n: #..
구현이란, 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정이다 구현 문제는 언어에 따라 난이도가 상대적으로 달라지는 경향이 있다 일반적으로 많은 기업 코딩테스트 문제에서는 2차원 공간에서의 처리를 요구한다. 시뮬레이션 및 완전 탐색 문제에서는 2차원 공간에서의 방향 벡터가 자주 활용된다 구현 유형, 완전 탐색 유형, 시뮬레이션 유형은 서로 유사한 점이 많다
그리디 알고리즘 정당성 분석 : 공포도가 낮은 애부터 그룹으로 만들면 최대가 나오겠다는 아이디어 이를 실현하기 위해 공표도가 낮은 얘들을 먼저 보고 싶으니까 '오름차순 정렬' 테크닉 사용 그룹을 만드는 방법 / 디테일 : '현재 그룹에 포함된 모험가의 수'가 '현재 확인하고 있는 공포도'보다 크거나 같다면 이를 그룹으로 설정 N = int(input())data = list(map(int, input().split())) # 한 줄에 여러 개의 정수를 입력받는 방법data.sort() # 파이썬에서 오름차순 정렬하는 법count =0 # 초기화group_num =0for i in data: count += 1 # 모든 경우가 ..