목록전체 글 (104)
컴퓨터공학 💻 도서관📚
(파이썬에서는 함수에 사용된 변수or 배열이 함수보다 아래에 있는데 정상적으로 되더라) ( ex. graph[][] ) (C언어에서는 함수 안에 있는 변수들은 전역변수로 따로 선언하지 않은 이상 다 지역변수여서 다 각각 선언을 해줘야 한다)(C언어에서는 함수에서 main함수에 있는 변수, 배열을 사용하고 싶으면 포인터를 이용해서 매개변수로 받아야 된다) dfs(x-1, y) 포함 4개 방향 코드 --> 코드 수행하고 혼자 반환하고 끝 --> [ 이 반환은 dfs(i, j)의 반환이 아니기에if dfs(i,j) == True: 이 코드에 영향을 주지 않는다 ] 대신 인접 노드의 값이 0이면 1로 바꾸는 효과가 있음 --> 그래서 그래프 형태에서 0이 인접한 덩어리를 1번만 셀 수 있다(와...
BFS 유형은 최단 거리 유형의 문제에 활용되기도 한다 모든 작업이 끝나면 큐 안은 비워져 있다. BFS 코드 예제 : DFS 와 마찬가지로 BFS 도 0번 인덱스를 비워두고, visited 배열의 요소를 9개로 선언한다 파이썬 예제queue = deque([start]) # 시작 노드를 큐에 넣어준다 파이썬 deque 를 출력해보면 deque([1,2]) 이런 형태로 출력이 된다. (큐의 요소 하나가 리스트 하나인 느낌) while queue # 큐가 참일 때 --> 큐가 0이 아닐 때 --> 큐가 비어있지 않을 때 (popleft 함수는 반환까지 하는 함수인듯) c++ 예제c++ 에서 인접리스트 방식으로 그래프를 구현하고자 하면 vector를 이용해서 특정..
if not 뒤에 나오는 조건을 만족하지 못하면 아래 코드를 수행함 if not number > 100: print("Nooooo") # number가 100을 넘지 않으면 Nooooo를 출력한다
DFS 동작 예시: 스택 자료구조인 경우방문 기준: 번호가 낮은 인접 노드부터 DFS 코드 예제 : 재귀함수를 사용한 경우(재귀함수로 구현하고 노드 방문 순서를 출력한 예시) 일반적으로 그래프 문제에서는 노드의 번호가 1번부터 시작하기 때문에 그래프를 초기화할 때 인덱스 0에 대한 내용은 비워두고 1번 인덱스부터 채운다 그렇기에 방문여부를 확인하는 리스트의 요소 개수를 노드 개수보다 1 높은 수로 선언하기 2차원 리스트를 선언할 때 숫자들을 작은 수부터 차례대로 써서재귀함수를 통해 우리가 원하는 대로 출력이 되게 만들 수 있었다. 자바 ArrayList 는 특정 인덱스에 접근하기 위해 상수시간이 소요되기 때문에 일반 배열보다 더 좋다ArrayList를 중첩된 형태로 이용해서 그래..
파이썬에서 end는 print 문의 옵션 중 하나이다 end옵션을 사용하면 그 뒤의 출력값과 이어서 출력한다. (즉, 줄바꿈을 하지 않게 된다.) print("I like", end=" ")print("romance")# 출력 결과 : I like romance 참고)https://infinitt.tistory.com/11 파이썬(Python) 기초 print ( )문의 옵션 (sep , end , format , Escape )파이썬에서 출력문에 사용되는 함수 print()에는 다양한 옵션들을 사용할 수 있다. 1. sep(separation) 영단어 그대로, 분리하여 출력한다. 다만 분리할 (갈라놓을 문자를 지정할 수 있다.) 이것을 구분infinitt.tistory.com
재귀함수 : 자기 자신을 호출(반환)하는 함수 재귀함수는 종료 조건을 꼭 명시해야 한다 재귀함수 예제 : 팩토리얼, 최대공약수 계산 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을 출력하고 삭제하는 식으로 스택 출력을 했다.