본문 바로가기

전체 글

(5)
14890 경사로 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748score = 0slope_map = list()map_size, L = map(int, input().split()) for _ in range(map_size): slope_map.append(list(map(int, input().split()))) def check_slope_possible(slope, L): is_slope = [0 for i in range(map_size)] for i in range(map_size-1): N = slope[i] - slope[i+1] if(abs(N) > 1): return False elif(N ==..
BFS의 기본 방식 1. 첫번째 경로의 좌표를 큐 A에 넣는다. 2. 인접한 노드들의 좌표를 또다른 큐 B에 넣는다. 이때, 중복해서 같은 노드가 큐에 들어가는것을 방지하기 위하여 방문한 노드들을 리스트에 넣어 처리한다. 3. 큐 B에 있는 좌표들을 큐 A로 옮긴다. 4. 큐A가 빌때까지 2의 과정을 반복한다. 5. 더이상 큐 B에 들어가는 좌표가 없거나, 혹은 목표 지점을 큐A가 발견했을시 반복을 종료한다.
1051 숫자 정사각형 1. 나의 생각 1. 반복문을 통해 같은 열에서 동일한 숫자가 있으면 그 위치(2개의 좌표)를 받고, 간격을 알아낸다. 2. 같은 간격의 아래쪽에 있는 좌표를 탐색해 그 숫자 또한 동일하면 max를 신규로 갱신한다. (신규 > max 일 경우) - 첫 번째 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 M = list(map(int, input().split())) arr = [] max = 1 for i in range(M[0]): arr.append(list(map(int, list(input())))) for i in range(M[0]): for j in range(M[1]): for k in range(M[1] - j - 1): num..
피보나치 수열을 표현하는 2가지 방법 1. 재귀함수를 통한 표현 방법 1 2 3 4 5 6 7 def fibo(n): if n == 0: return 0 elif n == 1: return 1 else: return fibo(n-1) + fibo(n-2) cs 기본적으로 사용되는 피보나치 함수이다. 하지만 이 함수는 하나의 함수호출이 다른 두개의 함수 호출로 나뉘어지는 바이너리 형태이다. 따라서 시간 복잡도는 O(2^n)로 n이 커질수록 결과를 가져오는 시간이 급증한다. 2. 반복문을 통한 표현 방법 1 2 3 4 5 6 7 8 9 def fibo(n): zero = 1 one = 0 tmp = 0 for _ in range(n): tmp = one one = one + zero zero = tmp return one cs 앞의 함수와 다르..
1015 수열정렬 1. 나의 생각 A를 입력받고 A만큼의 크기를 가지는 배열 P를 생성한다. A에서 가장 작은 원소의 위치를 받고, 그 위치의 수를 1000이 넘는 숫자로 바꾼 후 모든 원소에 대해 같은 과정을 반복한다. 이를 바탕으로 P를 출력한다. 2. 더 나은 생각 리스트로 A의 위치와 수를 동시에 받는다 ex) [[5,0],[8,1],[6,2],[2,3],[3,4]] sort 함수를 통해 수를 정렬한다. 그 후 P(A[i][1]) = i 의 방식으로 P를 출력한다. # 새로 배운 함수 A = list(map(int, A)) == A의 배열 안의 정보를 int 형식으로 바꾼다. ' '.join(A) == A 리스트 안의 정보를 출력한다.