본문 바로가기
728x90

전체 글348

이것이 취업을 위한 코딩 테스트다 CHAPTER 12 구현 문제 Q. 7 럭키 스트레이트 ''' Chapter 12. 럭키 스트레이트 접근법 1 슬라이싱으로 점수를 절반으로 나누기 map을 통해 type을 int로 바꾼 후 sum ''' import sys input = sys.stdin.readline # 점수 N = input().rstrip() # 왼쪽 점수 합 left_score = sum(map(int,N[:len(N)//2])) # 오른쪽 점수 합 right_score = sum(map(int,N[len(N)//2:])) # 두 점수 합이 같으면 성공 if left_score == right_score: print('LUCKY') else: print('READY') Q. 8 문자열 재정렬 ''' Chapter 12. 문자열 재정렬 접근법 1 최초문자를 정.. 2023. 4. 5.
이것이 취업을 위한 코딩 테스트다 CHAPTER 6 정렬 정렬 데이터를 특정한 기준에 따라서 순서대로 나열하는 것 list.reverse() 리스트를 뒤집는 연산 O(N) 선택정렬 매번 가장 작은 것을 선택하는 알고리즘 이 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고, 그다음 작은 데이터를 선택해 앞에서 두 번째 데이터와 바꾸는 과정 반복 O(N^2) # 선택 정렬 arr = [7,5,9,0,3,1,6,2,4,8] for i in range(len(arr)): min_index = i # 가장 작은 원소의 인덱스 for j in range(i+1,len(arr)): if arr[min_index] > arr[j]: min_index = j arr[i], arr[min_index] = arr[min_index], arr[i] print(arr.. 2023. 4. 5.
파이썬 - 런타임 에러 (RecursionError) 해결법 RecursionError는 재귀와 관련된 에러 가장 많이 발생하는 이유는 Python이 정한 최대 재귀 깊이보다 재귀의 깊이가 더 깊어질 때 BOJ의 채점 서버에서 재귀 최대 깊이는 1,000 sys.getrecursionlimit() 재귀 최대 깊이 확인 sys.setrecursionlimit(10**n) 재귀 최대 깊이 제한 해제 n은 필요에 따라 바꿔주기 주로 6 or 9 2023. 4. 3.
[백준] 2263. 트리의 순회 - Python https://www.acmicpc.net/problem/2263 2263번: 트리의 순회 첫째 줄에 n(1 ≤ n ≤ 100,000)이 주어진다. 다음 줄에는 인오더를 나타내는 n개의 자연수가 주어지고, 그 다음 줄에는 같은 식으로 포스트오더가 주어진다. www.acmicpc.net 풀이 인오더 : 중위순회 (왼쪽자식 -> 루트 -> 오른쪽자식) 포스트오더 : 후위순회 (왼쪽자식 -> 오른쪽자식 -> 루트) 맨 마지막이 최상위 루트!!!! 프리오더 : 전위순회 (루트 -> 왼쪽자식 -> 오른쪽자식) 포스트오더를 통해 루트를 구해 인오더에서 왼쪽서브트리의 노드의 개수와 오른쪽서브트리의 노드의 개수를 각각 구해 왼쪽 서브트리, 오른쪽 서브트리로 쪼갠다. 코드 import sys sys.setrecursio.. 2023. 4. 3.
[백준] 11444. 피보나치 수 6 - Python https://www.acmicpc.net/problem/11444 11444번: 피보나치 수 6 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 재귀로 하나하나 피보나치 수를 구하니 시간초과 분할 정복을 이용한 거듭 제곱 활용 아래 그림으로 설명 코드 import sys input = sys.stdin.readline # 행렬 제곱 def power(adj,n): if n == 1: return adj # n이 짝수인 경우 elif n%2 == 0: return power(multi(adj,adj),n//2) # n이 홀수인 경우 else: return multi(power(adj,n-1),adj) # 행렬의 .. 2023. 4. 3.
파이썬 시간 복잡도 in 연산자 list, tuple Average: O(n) 하나하나 순회하기 때문에 데이터의 크기만큼 시간 복잡도를 갖게 됩니다. set, dictionary Average: O(1), Worst: O(n) 내부적으로 hash를 통해서 자료들을 저장하기 때문에 시간복잡도가 O(1)가 가능하고 O(n)의 경우에는 해시가 성능이 떨어졌을(충돌이 많은 경우) 때 발생합니다. 2023. 4. 2.
반응형