목록코딩 테스트/정리 및 복습 (6)
공부 기록장
1. 딕셔너리란? 단어 그대로 '사전'의 의미를 갖는다. Key를 통해 Value를 얻을 수 있는 자료형이다. 2. 딕셔너리를 만드는 방법 dic = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'} dic2 = {1: 'hi'} dic3 = {'a': [1, 2, 3]} 3. 딕셔너리 쌍 추가 / 삭제 # 추가 >>> a = {1: 'a'} >>> a[2] = 'b' >>> a {1: 'a', 2: 'b'} >>> a['name'] = 'pey' >>> a {1: 'a', 2: 'b', 'name': 'pey'} >>> a[3] = [1, 2, 3] >>> a {1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]} # 삭..
1. Call by value와 Call by reference C언어를 공부하면서 들어봤던 표현이다. 함수의 인자를 전달하는 방식에 대한 명명인데, 인자로 어떤 타입을 전달하느냐에 따른 차이가 있다 1) Call by value : 변수를 복사한 값을 전달하는 방식 함수의 인자를 받을 때, 변수에 담긴 값 자체를 stack에 복사하여 넘겨준다. 예를 들어 변수 a가 있고 함수 func1가 있을 때, func1(a)에서 전달받은 a는 a 자체(주소 값)가 아니라 a의 복사값인 것이다. 따라서 함수 내에서 해당 인자를 조작해도 원본 변수 a는 변하지 않는다. 원본이 수정되지 않아 안전하지만, 함수를 사용해 전역 변수를 바꾸고 싶을 때는 리턴 값을 다시 전역 변수로 넣어줘야해서 번거롭다. 2) Call by..
코딩 테스트 문제 풀이 시 최소값과 최대값을 설정해야 하는 경우가 종종 있다. 문제에서 주어진 최대 범위를 활용해 설정해도 되지만 무한수로 설정하기도 한다. 예를 들면, 최단 경로 문제에서 도달할 수 없는 노드에 대한 거리를 설정할 때 무한(INF)으로 설정한다. 무한수를 설정하는 방법에는 크게 3가지 정도가 있다. 1. 지수 표현 가장 널리 쓰이는 방법인 것 같다. 문제에서 가능한 최댓값이 10억 미만이라면 초기화를 10억으로 해줄 수 있는데 1e9 혹은 -1e9 와 같이 지수 표현으로 10억을 설정해주면 0의 개수가 많아져서 실수하는 것을 줄일 수 있다. INF = 1e9 최대값의 범위에 따라 2e9 혹은 -2e9로 사용할 수도 있다. 2. sys.maxsize sys 라이브러리의 maxsize 를 ..
완전 탐색 문제를 푸는데 백트래킹을 알아야 시간 내에 풀리는 문제들이 많았다. 왜 완전 탐색 유형 문제인데 백트래킹이 나오지 하는 의문을 갔고 일단 나왔으니까 풀어야지 하는 생각을 풀었는데 알고보니, 백트래킹은 완전 탐색을 개선한 형태의 탐색 방식이었다. 완전 탐색 모든 경우를 탐색해가면서 무언가를 세거나 어떤 조건이 가능한 경우가 있는지 확인하는 방법 DFS/BFS도 결국 완전 탐색의 한 유형으로 이해할 수 있다. 사용하는 경우 발생 가능한 경우의 수가 충분히 적은 경우 따져야 하는 상황이 특정 규칙에 따라 발생하지 않는 경우 각각의 경우에 따져야 하는 상황이 명확한 경우 사용하는 방법 발생 가능한 모든 경우를 찾아낸다 각각의 경우에 대해 조건에 부합하는지 판단한다 백트래킹 재귀를 이용한 완전 탐색 방..