목록2024/10 (15)
컴퓨터공학 💻 도서관📚
재귀함수 : 자기 자신을 호출(반환)하는 함수 재귀함수는 종료 조건을 꼭 명시해야 한다 재귀함수 예제 : 팩토리얼, 최대공약수 계산 def factorial(n): # 팩토리얼 계산 if n == 1: return 1 return n * factorial(n-1)N = int(input())print(factorial(N)) 모든 재귀함수는 반복문을 이용하여 동일한 기능을 구현할 수 있다 재귀 함수가 반복문보다 유리한 경우도 있고 불리한 경우도 있다 컴퓨터가 함수를 연속적으로 호출하면 컴퓨터 메모리 내부의 스택 프레임에 쌓입니다. 그래서 스택을 사용해야 할 때 구현상 스택 라이브러리 대신에 재귀 함수를 이용하는 경우가 많습니다재귀함수를 이용하여 DFS를 더 간결하..
큐 : 터널, 주유소 큐는 먼저 들어온 데이터가 먼저 나간다 파이썬 큐 : 리스트도 기능적으로는 구현할 수 있지만 시간복잡도가 더 높아서 비효율적임, 덱 / 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 = 'abcde'print[::-1] # 출력 결과: 'edcba' # 문자열을 거꾸로 출력하는 방법print[3:0:-1] # 출력 결과: 'dcb' # 주의할 점: 3번 인덱스부터 1번 인덱스까지(0번 까지가 아님) 역순으로 출력한다print[3::-1] # 출력 결과: 'dcba' # 가운데를 생략하면 0번 인덱스까지 역순으로 출력한다 다시 한 번 더 강조 : print[3 : 0 : -1] 이 코드는 3번 인덱스부터 1번 인덱스까지(0번 까지가 아님) 역순으로 출력한다 닫힌 구간 열린 구간
pop함수는 특정 인덱스 값을 매개변수로 입력받아서 해당 요소를 삭제 및 반환한다. a = [1, 2, 3]print(a.pop) # 출력 결과: 3 # a[2]인 3을 삭제 및 반환print(a) # 출력 결과: [1, 2] remove함수는 pop함수와는 다르게 인덱스가 아닌 삭제할 값을 매개변수로 입력받고 해당 요소를 삭제한다 data = [1, 2, 3]data.remove(3)print(data) # 출력 결과: [1, 2] index함수는 리스트에서 특정 데이터가 어느 위치(인덱스 값 / 순서 값)에 있는지를 반환한다중복된 데이터가 있을 경우, 처음 등장하는 위치를 반환한다 data = [1, 2, 3, 4, 3, 2]print(data.index(..
join 함수는 간단히 말해 리스트에 있는 요소들을 합쳐서 하나의 문자열로 바꾸어 주는 함수입니다. ''.join(리스트)data = ['a', 'b', 'c']result = ''.join(data)print(result) # 출력 결과: abc '구분자'.join(리스트)data = ['a', 'b', 'c']result = '_'.join(data)print(result) # 출력 결과: a_b_c
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..