목록알고리즘 (71)
우당탕탕 개발일지
맨날 input(), input().split()만 쓰다가, 뭔가 더 간편하고 속도도 빠른 방법은 없을지 찾아보았다. [상황 1] 한 줄에 여러 값을 int타입으로 받고, 이를 리스트로 저장하는 상황 사용할 함수: input(), split(), map(), list() n = list(map(int, input().split())) n # [3, 6, 9, 12, 15] [상황 2] 여러 줄에 걸쳐 여러 값을 int타입으로 받고, 이를 리스트로 저장하는 상황 import sys sys.stdin.read().splitlines()로 줄별로 입력값을 읽어온다. 그리고 그 값을 리스트에 넣는다. import sys data = sys.stdin.read().splitlines() [추가] input() 대..
BFS = Breath First Search 너비 우선 탐색 가장 가까이에 있는 노드부터 우선 탐색 일반적인 경우 실제 수행시간은 DFS보다 좋다. collections 모듈의 deque 라이브러리를 사용한다. 예제 코드 from collections import deque # BFS 메서드 정의 def bfs(graph, start, visited): # 큐 구현을 위해 deque 라이브러리 사용 queue = deque([start]) # 탐색한 노드를 방문처리 visited[start] = True # 큐가 빈 상태가 될 때까지 반복 while queue: v = queue.popleft() print(v, end = ' ') # 탐색한 노드와 연결되어 있지만 아직 안 읽은 노드들을 큐에 삽입 f..

DFS/BFS... 생전 처음 들어보는 내용이라 더욱더 자세하게 정독했다. 일단 DFS/BFS를 시작하기 전에 탐색, 자료구조, 오버플로, 언더플로, 스택, 큐, 재귀함수 등의 용어를 알아야 한다. 탐색 = 원하는 데이터를 찾는 과정 자료구조 = 데이터를 표현하고 관리하고 처리하기 위한 구조(스택과 큐가 자료구조의 개념) - 삽입(Push) & 삭제(Pop) 스택 vs 큐 - 스택은 선입후출, 큐는 선입선출 큐 - 큐를 구현할 때 collections 모듈에서 제공하는 deque 자료구조 활용 - from collections import deque queue = deque() queue.popleft() #왼쪽에 삭제 queue.append() #오른쪽에 삽입 queue.reverse() #리스트 자체..

https://www.acmicpc.net/problem/2828 2828번: 사과 담기 게임 상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M
3개의 요소로 이루어지는 3항 연산은 "x if C else y" 의 형태로 작성이 된다. - C : True 또는 False 를 평가할 조건식(conditional expression) 또는 값 - x : C의 평가 결과가 True 일 때 사용할 값 - y : C의 평가 결과가 True 가 아닐 때 사용할 값 예를 들어, a if (a>=b) else b에서 a = 100,

** 비트단위(bitwise) 연산자는, ~(bitwise not), &(bitwise and), |(bitwise or), ^(bitwise xor), (bitwise right shift) 가 있다. 비트단위로 NOT하여 출력하기 입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력하기 비트단위(bitwise)연산자 ~ 를 붙이면 된다.(~ : tilde, 틸드라고 읽는다.) 예를 들어 4진수의 경우 6은 0110이고, ~6은 1001, 즉 -7에 해당하게 된다. ~n = -n - 1 관계를 기억하자! (ex. ~1 = -2) 비트단위로 AND하여 출력하기 입력된 정수 두 개를 비트단위로 and 연산한 후 그 결과를 정수로 출력하기 비트단위(bitwise)연산자 &를 사용하면 된다.(and, a..