본문 바로가기

알고리즘

(138)
[알고리즘] 백준 7490 0만들기 import copy def func(arr, n): if len(arr) == n: operator_array.append(copy.deepcopy(arr)) return arr.append(" ") func(arr, n) arr.pop() arr.append("+") func(arr, n) arr.pop() arr.append("-") func(arr, n) arr.pop() test_case = int(input()) for _ in range(test_case): n = int(input()) operator_array = [] integer = [i for i in range(1,n+1)] func([], n-1) for operator in operator_array: total = "" fo..
[알고리즘] 백준 1074 Z def solve(n, x, y): global result if n == 2: if x==X and y==Y: print(result) return result += 1 if x==X and y+1==Y: print(result) return result += 1 if x+1==X and y==Y: print(result) return result += 1 if x+1==X and y+1==Y: print(result) return result +=1 return solve(n/2, x, y) solve(n/2, x, y + n/2) solve(n/2, x + n/2, y) solve(n/2, x + n/2, y + n/2) result = 0 n, X, Y = map(int, input().split..
[알고리즘] 백준 2747 피보나치 수 def fibo(n): if n == 0: return 0 elif n == 1: return 1 return fibo(n-1) + fibo(n-2) n = int(input()) print(fibo(n)) 이 코드의 시간복잡도는 O(2^n)으로 너무 크다 시간초과 오류 n = int(input()) a, b = 0, 1 while(n>0): a, b = b, a+b n -= 1 print(a) 단순 반복문으로 해결
[알고리즘] 백준 10989 수 정렬하기 / python 파이썬의 기본 정렬 라이브러리는 O(nlogn)의 시간복잡도를 가지기 때문에 천만개의 데이터는 메모리초과 시간복잡도 O(n)의 계수정렬 알고리즘을 이용해야함 import sys n = int(sys.stdin.readline()) arr = [0] * 10001 for i in range(n): num = int(sys.stdin.readline()) arr[num] += 1 for i in range(10001): if arr[i] != 0: for j in range(arr[i]): print(i) 데이터의 개수가 많을때는 sys.stdin.readline() 을 사용해야함 arr = [int(x) for x in input().split()] 이방법보다 arr = map(int, sys.stdin...
[알고리즘] 백준 11650 좌표 정렬하기 n = int(input()) arr = [] for _ in range(n): point = input().split() arr.append((int(point[0]),int(point[1]))) arr2 = sorted(arr) for i in arr2: print(i[0],i[1]) n = int(input()) array = [] for _ in range(n): x, y = map(int, input().split(' ')) array.append((x, y)) array = sorted(array) for i in array: print(i[0], i[1])
[알고리즘] 백준 10814 나이순 정렬 n = int(input()) member = [] for _ in range(n): arr = input().split(' ') member.append([int(arr[0]),arr[1]]) member_sort = sorted(member, key=lambda x: x[0]) for i in range(n): print(member_sort[i][0],member_sort[i][1]) append([원소1, 원소2]) 로 2차원 배열 만들기 가능 sorted(member, key=lambda x: x[0]) 는 member배열에서 안쪽 리스트의 0번째 원소를 기준으로 정렬 n = int(input()) array = [] for _ in range(n): input_data = input().spl..
[알고리즘] 백준 1427 소트인사이드 num = input() for i in range(9, -1, -1): for j in num: if int(j) == i: print(i, end='') print(i, end='') 는 줄바꿈없이 이어서 출력!
[알고리즘] 선택정렬 (selection sort) 선택정렬이란? 주어진 데이터 중, 최소값을 찾음 해당 최소값을 데이터 맨앞의 값과 자리바꿈 맨앞의 위치를 빼고 동일한 방법으로 반복 알고리즘 구현 selection_sort(data): for stand in range(len(data)-1): lowest = stand for index in range(stand + 1, len(data)): if data[lowest] > data[index]: lowest = index data[lowest], data[stand] = data[stand], data[lowest] return data