분류 전체보기
-
[Recursion] 재귀 with Hanoi Tower알고리즘/Algorithm Theory 2022. 6. 17. 04:29
재귀.!, 알고리즘의 이해와 설계에 매우 중요한 기술 Recursion의 예. 1. 팩토리얼 연산 2. 자연수의 정의 - 1은 자연수이다. (Base case) - n이 자연수이면, n보다 1큰수도 자연수이다. Reduction (= 축소) 어떤 문제X에 대해 Y로 축소해라. X라는 문제를 풀기위해, Y를 푸는 함수를 호출한다. 이때 Y를 어떻게 풀것인지는 신경쓰지않는다. 이때, Y를 푸는 함수는 어떻게 작동하는지는 모르지만(신경x), 항상 옳게 Y를 풀어낸다. Example - 배열 A[0...n-1]에서 최소값 찾기 1. A를 정렬한다. 2. return A[0] - Selction(A[0...n-1], k) 배열 A[0...n-1]에서 k번째로 작은 값 찾기 1. A를 정렬한다. 2. return ..
-
[Time Complexity] 시간 복잡도알고리즘/Algorithm Theory 2022. 6. 17. 02:46
Algorithm의 수행시간을 이론적으로 분석하기 위한 개념 수행시간은 환경에 따라 달라진다.(구현한 언어, 컴파일러, 컴퓨터의 스펙 등) 즉, 같은 환경적 요인들을 가졌을 때의 수행시간을 비교 아래 3가지에 대한 시간 복잡도를 주로 분석한다. ● Big-Oh Notation 빅오 표기법, 주로 사용하는 표기법이다. 왜 빅오표기법을 주로 사용하는가? - 'A라는 알고리즘이 최선의 경우 1초만에 문제를 해결한다.' 하지만, 최악의 경우 inf의 시간이 걸린다면, 의미가 있다고 할 수 있을까? 이보다는 'A라는 알고리즘은 최악의 경우에도 10초만에 문제를 해결해' 가 더 의미있을 것이다. - 두 함수 간의 관계를 나타내는 표기법 시간복잡도를 나타내는데 주로 쓰이지만, 별개로 함수의 증가속도(growth ra..
-
[Java] Thread를 사용해, 음성인식처리공부/그외 2022. 5. 30. 03:18
메모. new Thread(){ public void run(){ try { Thread.sleep(3000); } catch (InterruptedException e) { throw new RuntimeException(e); } String[] kewards = {"test1", "test2", "test3"}; buttons[voiceRecognition(kewards)].doClick(); } }.start(); //voiceRecognition(String[] kewards) : 음성인식 후 배열kewards 중 일치하는 값이 있다면 해당 인덱스 반환
-
-
[깊이/너비 우선 탐색(DFS/BFS)] 네트워크알고리즘/프로그래머스 2021. 11. 11. 20:43
https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr def solution(n, computers): visited = [0 for i in range(n)] answer = 0 def DFS(arg): visited[arg] = 1 for i in range(n): if computers[arg][i] and not visited[i]: DFS(i) for c in range(n): if visited[c..
-
깊이/너비 우선 탐색(DFS/BFS) 타겟 넘버알고리즘/프로그래머스 2021. 11. 11. 20:39
https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr def solution(numbers, target): result = 0 def dfs(num, level): nonlocal result if level == len(numbers): if num == target: result += 1 return signs = [-num, num] if level ==..
-
[위클리 챌린지] 아이템 줍기알고리즘/프로그래머스 2021. 11. 10. 01:43
https://programmers.co.kr/learn/courses/30/lessons/87694# 코딩테스트 연습 - 아이템 줍기 [[1,1,7,4],[3,2,5,5],[4,3,6,9],[2,6,8,8]] 1 3 7 8 17 [[1,1,8,4],[2,2,4,9],[3,6,9,8],[6,3,7,7]] 9 7 6 1 11 [[2,2,5,5],[1,3,6,4],[3,1,4,6]] 1 4 6 3 10 programmers.co.kr Python, 프로그래머스 위클리챌린지 아이템 줍기이다. LV3 이라 ??? 했는데, 생각보다 쉽게 풀었다. 상자들이 인접할때, 넘어가는 것을 막기위해 크기 자체를 2배로 늘렸다. - 풀이 1. 2배 크기의 배열 선언 2. 1은 이동 가능한곳, 0은 이동 불가능한곳, 2는 아이..
-
[위클리 챌린지] 피로도알고리즘/프로그래머스 2021. 11. 9. 19:39
https://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 순열... 활용 쉽다. from itertools import permutations def solution(k, dungeons): cases = permutations(dungeons, len(dungeons)) # 순열 answer = 0 for c in cases: result = 0 temp = k for i in c: if temp >= i[0..