본문 바로가기

Python

(5)
파이썬 재귀 깊이 제한 변경(RecursionError) RecursionError BFS/DFS 문제를 풀다보면 RecursionError와 같은 런타임 에러를 마주하는 경우가 있다. 처음엔 코드 상에 문제가 없고 입력값에 맞는 출력값을 제대로 출력했는데도 에러가 떠서 당황했다.. RecursionError 해결방법 Python3 기준 최대 재귀 깊이는 1000이다. 그것보다 오버되는 수의 재귀가 호출되는 경우 에러가 발생하는 것이다. 이를 해결하기 위해서 파이썬 기본 재귀 깊이 제한을 임의로 변경하면 되는데 sys 라이브러리의 setrecursionlimit 메소드를 사용하면 된다. 백준 1012번 - 유기농 배추 문제 처음 제출한 코드 (에러 발생) - 코드 상에는 문제 없이 제대로 출력되는데 에러가 발생했다. import sys t = int(sys.s..
[Python] set(집합) 자료형 정리 1. 파이썬 set(집합) 집합에 관련된 것을 처리하기위해 만들어진 자료형 순서가 없음 - 인덱싱 불가능 중복을 허용하지 않음 (고유한 값을 가짐) mutable(=값이 변하는) 객체 s1 = set([1,2,3]) print(s1) s2 = set("hello") # {1,2,3} # {'o', 'h', 'l', 'e'} 만약 set 자료형에 저장된 값을 인덱싱으로 접근하려면 리스트 또는 튜플로 변환 후 접근해야함 s1 = set([1,2,3]) list1 = list(s1) print(list1) print(list1[0]) # [1,2,3] # 1 2. 파이썬 set(집합), 교집합/합집합/차집합 s1 = set([1, 2, 3, 4, 5, 6]) s2 = set([4, 5, 6, 7, 8, 9])..
백준 2178번_미로 탐색 (Python/파이썬) https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 ..
백준 1260번_DFS와 BFS (Python/파이썬) https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 1..
[Python] 2차원 배열(리스트) 초기화, 입력 받기 파이썬 2차원 배열(리스트) 초기화 2차원 이상의 배열(리스트)를 초기화 해야하는 경우 #아래와 같은 방식으로 해야한다 n = 10 arr = [[0]*n for i _ in range(n)] >> arr[[0] * n] * n 과 같은 방식(1차원 리스트 초기화)으로 초기화할 경우, [0] * n 을 모두 같은 객체로 인식 따라서 arr[0][0] = "1" 로 수정을 할 경우, 모든 행의 첫번째 값이 바뀜 # N*M 크기의 2차원 배열 초기화 n = 5 m = 5 arr = [[0]*m for _ in range(n)] print(arr) #[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] 파이썬 2차원 배열(리스트) 입력받기 #1. 2차원..