반응형

# 3. APS/알고리즘 노트 10

Python Syntax (파이썬 기초 문법)

String 조회 # x의 첫 번째 위치 반환. 없으면 -1 리턴 .find(x) # x의 첫 번째 위치 반환. 없으면 오류 발생시킴 .index(x) 바뀐 결과의 String을 리턴 # 바꿀 대상 글자를 새로운 글자로 바꿔서 반환. # count를 지정하면 해당 갯수만큼만 시행. .replace(old, new[, count]) # 특정한 문자를 양쪽에서 제거하거나 왼쪽에서 제거하거나(lstrip), 오른쪽을 제거(rstrip). # 지정하지 않으면 공백을 제거 .strip([chars]) # 문자열을 특정한 단위로 나누어 리스트로 반환 .split(sep=None) # 앞글자를 대문자로 만들어 반환 .capitalize() # 어포스트로피나 공백 이후를 대문자로 만들어 반환 .title() # 모두 ..

BFS(너비 우선 탐색) Python코드로 이해하기

BFS(너비 우선 탐색) 시작 노드부터 출발해서 가까운 노드부터 우선적으로 탐색하는 형태 큐 자료 구조를 이용한다는 점이 특징 시작 노드를 큐에 넣고 방문 처리를 해야 합니다. 큐에서 노드를 꺼낸 뒤에 그 꺼낸 노드에 인적 노드 중에서 방문하지 않은 노드를 모두 취해놓고 방문 처리를 수행. bfs는 해당 시점에서 인접한 노드를 한 번에 전부 큐에 넣는다는 점이 특징 큐를 위해서 하나의 deque 라이브러리를 부르자. dfs 때와 마찬가지로 이 0번 노드에 대한 내용을 비우고 8개의 노드를 모두 처리할 수 있도록 총원소가 9개인 리스트 객체를 만들어 그래프를 표현해준다. 그래서 1번 노드는 2, 3, 8번 노드와 인접해 있고 2번 노는 1, 7번 노드와 인접해있다. 방문 처리 목적으로 visited라는 이..

DFS(깊이우선탐색) Python코드로 이해하기

DFS(깊이우선탐색) dfs는 이름에서부터 알 수 있듯이 깊이를 우선으로 하여 탐색하는 알고리즘. dfs를 구현하고자 할 때는 스택 자료구조 혹은 재귀 함수를 이용. 먼저 탐색을 시작할 노드를 스텍에 넣고 방문 처리. 스택의 최상단 노드에 방문하지 않은 인접 노드가 하나라도 있다면 그 노드 또한 스택에 넣고 방문 처리. 혹은 만약 스택에 최상단 노드에 방문하지 않은 인접 노드가 없으면 그냥 스택에서 해당 노드를 꺼내면 된다. 이러한 과정을 더 이상 수행할 수 없을 때까지 반복. 어떤 노드부터 방문할지를 결정하기 위한 기준은 문제에서 요구하는 내용에 따라서 달라질 수 있고 어떤 노드부터 방문하더라도 상관이 없는 경우도 있다. 흔히 번호가 낮은 로드부터 방문한다고 가정하고 설명을 진행하는 경우가 많다. 파이..

DFS, BFS 공부 전에 알아야 할 것

DFS, BFS 공부 전에 알아야 할 것 Stack 자료구조 입구와 출구가 동일한 형태로, 선입후출 자료구조. Python에서는 다른 표준 라이브러리를 이용할 필요 없이 리스트 자료형을 이용하여 스택을 구현한다. 가장 오른쪽에 자료를 산입하는 append()와 가장 오른쪽에서 하나의 원소를 꺼내는 pop()를 지원하는데, 이를 그대로 이용해서 스택과 같이 사용할 수 있다. 나중에 모든 작업이 끝난 후 스택을 출력할 땐, 최상단 원소부터 출력하려면 [::-1]을 통해 출력해야한다. Queue 자료구조 선입선출의 자료구조, 차례대로 작업을 시행하는 대기열을 나타내고자 할 때 사용. 큐 자료구조를 Python에서 이용하고자 할 땐 deque(덱) 라이브러리를 사용하면 된다. Stack과 같이 리스트 자료형으로..

Python # append()와 extend()의 차이점

list.append(x)는 list의 끝에 1개의 x를 집어넣는다. list.extend(iterable)는 list의 끝에 iterable의 모든 항목을 집어넣는다. append() x = ['Hi', 'Hello', '안녕'] y = ['나는', '파이썬'] x.append(y) print(x) ['Hi', 'Hello', '안녕', ['나는', '파이썬']] extend() x = ['Hi', 'Hello', '안녕'] y = ['나는', '파이썬'] x.extend(y) print(x) ['Hi', 'Hello', '안녕', '나는', '파이썬'] 만약 리스트가 아닌 문자열 형태가 된다면 아래와 같습니다. append() x = ['Hi', 'Hello', '안녕'] y = '나는 파이썬' x...

BFS(너비우선탐색)이란

그래프 탐색 하나의 정점에서 시작하여 모든 정점을 한 번씩 방문하는 것 예) 회로에서 특정 단자와 단자가 연결되어있는지 너비우선탐색(BFS, Breadth-First Search) 임의의 노드에서 시작하여 인접한 노드를 탐색하는 방법. 시작 노드에서 부터 가까운 노드를 먼저 방문하고 멀리 떨어진 정점은 나중에 방문하는 순회방법. 두 노드사이의 최단경로를 찾아야하거나 임의 경로를 찾고싶을 때 사용. 어떤 노드를 방문했는지 반드시 검사해야 한다. 하지 않으면 무한루프에 빠질 수 있다. BFS는 차례로 저장하고 꺼낼 수 있는 큐를 사용하여 선입선출 원칙으로 탐색한다. BFS는 방문 노드의 인접한 노드를 큐에 저장하는 것이 DFS와 다른 점. 🔽 REFERENCE 알고리즘 - BFS(너비 우선 탐색) 이번에 살..

알고리즘 사이트 비교 및 추천

아래의 내용은 백준 순위에서 100위권 안에 드신 싸피인의 조언을 바탕으로 작성하였습니다. SWEA 테스트 케이스가 이상한 경우가 많은데 문제가 되는 테스트 케이스에 대한 업데이트도 느린편. 백준 다른 알고리즘 사이트에 비해 문제가 많다. 이상한 테스트 케이스가 있어도 빠르게 업데이트되는 편. 문제 상단의 게시판 탭에 문제에 대한 질문을 할 수 있는 공간이 있음. 또한 문제를 풀다 보면 내가 어느 정도의 위치에 있는지 등급을 가늠할 수 있음. [참고] solved.ac 사이트 백준이랑 연동해서 사용하는 사이트! 백준에 있는 문제 중 내가 풀고싶은 알고리즘 유형을 선택하고 테크별 및 레벨별로 문제를 정리해준 사이트이다. Programmars 프로그래머스를 통해 입사에 필요한 코딩 테스트를 치르는 경우가 많..

Python 알고리즘 # print문 옵션_sep/end/format

sep='~' ~을 값 사이에 넣어 분리해준다. 예) hello world를 입력받고, helloworld를 출력해보자. a = input().split() print(*a, sep='') '{}'.format() 예) 구구단 출력 for i in range(2, 10): for j in range(1, 10): print('{} X {} = {}'.format(i, j, i*j)) 포맷코드(%) %c : 문자 %s : 문자열 %d : 정수 %f : 실수 %o : 8진수 %x : 16진수 예) 이름 = '박싸피' 나이 = 28 print('제 이름은 %s입니다. 나이는 %d살입니다.' % (이름, 나이)) 🔽 참고한 링크 파이썬(Python) 기초 print ( )문의 옵션 (sep , end , for..

[2021.07.03] Python 알고리즘 # join 함수

'구분자'.join(리스트) 리스트에 있는 요소를 합쳐 하나의 문자열로 바꾸어 반환해주는 함수 🔽 join 활용하여 푼 문제들 [2021.03.13] CodeUp # Python 기초 100제_6020_주민번호 입력받아 형태 바꿔 출력하기 [문제] 주민번호는 다음과 같이 구성된다. XXXXXX-XXXXXXX 왼쪽 6자리는 생년월일(YYMMDD)이고, 오른쪽 7자리는 성별, 출생지역, 확인 코드로 구성되어있다. 주민번호를 입력받아 형태를 바꿔 출력해보 pythontoomuchinformation.tistory.com

반응형