일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- tensorflow update
- 완전탐색
- #실생활 영어
- 이미지 생성
- 딥러닝
- 영어명언
- object detection
- c언어
- text2img
- python 알고리즘
- findContours
- python list
- keras
- word embedding
- tokenizing
- TensorFlow
- #일상영어
- Convolution Neural Network
- #English
- #실생활영어
- #opencv
- #프로젝트
- 영어
- convexhull
- #1일1영어
- python __init__
- #영어
- opencv SURF
- #영어 명언
- #Android
- Today
- Total
목록02. Study/Algorithm (16)
When will you grow up?
https://leetcode.com/problems/trapping-rain-water/description/ Problem.각 막대의 너비가 1인 고도 지도를 나타내는 음이 아닌 정수 n이 주어지면 비가 내린 후 얼마나 많은 물을 가둘 수 있는지 계산해라 Input: height = [0,1,0,2,1,0,1,3,2,1,2,1] Output: 6 Explanation: 위의 지도(검은색 부분)는 배열 [0,1,0,2,1,0,1,3,2,1,2,1]로 표시됩니다. 이 경우 빗물 6개(파란색 부분)가 갇혀 있습니다. Solution.이 문제를 해결하기 위해 "Two Pointers" 방법을 이용할 수 있다.투 포인터는 배열에서 여러가지 쌍을 검색하는 데 일반적으로 사용된다. 만약 자세한 내용을 알고싶다..
https://leetcode.com/problems/two-sum 리트코드 첫번째 문제이다.첫번째 문제답게 난이도는 낮은편이고 그럼 문제를 살펴보도록 하자.Example 1:Input: nums = [2,7,11,15], target = 9Output: [0,1]Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].Example 2:Input: nums = [3,2,4], target = 6Output: [1,2]Example 3:Input: nums = [3,3], target = 6Output: [0,1] Constraints:2 입력으로 nums 리스트가 주어지고, 리스트 안에 숫자가 있는데 이 조합을 통해 target을 만드는 문제다.제..
https://leetcode.com/problems/longest-palindromic-substring/ 팰린드롬 부분 문자열 문제다. Palindromic 팰린드롬이 뭔지 알아보자.Wiki 를 살펴보니 회문(回文) 또는 팰린드롬(palindrome)은 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열(sequence of characters) 등이다. 보통 낱말 사이에 있는 띄어쓰기나 문장 부호는 무시한다라고 나와있다. 그럼 이제 문제를 살펴보자. Example 1:Input: s = "babad"Output: "bab"Explanation: "aba" is also a valid answer.Example 2:Input: s = "cbbd"Output: "bb" Constrain..
https://leetcode.com/problems/group-anagrams/ 애너그램 문제이며,애너그램이란 문자열이 주어졌을 때, 알파벳의 나열 순서를 다르지만 그 구성이 일치하면 두 단어는 아나그램이라고 합니다.ex) a = "atta" b = "taat" 일때 나열 순서는 다르지만 a 2개 t 2개로 a 와 b는 Anagram이라고 표현한다. Example 1:Input: strs = ["eat","tea","tan","ate","nat","bat"]Output: [["bat"],["nat","tan"],["ate","eat","tea"]]Example 2:Input: strs = [""]Output: [[""]]Example 3:Input: strs = ["a"]Output: [["a..
https://leetcode.com/problems/most-common-word/description/ 가장 흔한 단어 1. 처음 풀이법- 소문자 변경- 구두점 제거 및 단어 분리- 단어 빈도수 계산- 가장 빈번한 단어 찾기 순서로 간단하게 해결하였다. 처음 풀이한 코드는 다음과 같다.from typing import Listclass Solution: def mostCommonWord(self, paragraph: str, banned: List[str]) -> str: # 소문자로 변환 paragraph = paragraph.lower() # 구두점 제거 및 단어 분리 words = [] current_word = ..
다이나믹 프로그래밍 - 다이나믹 프로그래밍은 메모리를 적절히 사용하여 수행 시간 효율성을 비약적으로 향상시키는 방법입니다. - 이미 계산된 결과(작은 문제)는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 합니다. (메모이제이션) - 다이나믹 프로그래밍의 구현은 일반적으로 두 가지 방식(top-down, bottom-up)으로 구성됩니다. 또한, 다이나믹 프로그래밍은 동적 계획법이라고 부르며, 일반적인 프로그래밍 분야에서의 자료구조에서 동적 할당(Dynamic Allocation)은 '프로그램이 실행되는 도중에 실행에 필요한 메모리를 할당하는 기법'이라는 의미를 가지며 다이나믹 프로그래밍에 동적(Dynamic)은 별다른 의미 없이 사용된 단어라 헷갈리면 안된다. 다이나믹 프로그래밍은 문제가 다음의 ..
이진탐색 순차 탐색(sequential search) : 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 이진 탐색(binary search) : 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 이진 탐색은 시작점, 끝점, 중간점이 존재 ex) 정렬되어 있는 리스트가 있다고 가정하고 4인 원소를 찾는 예시 [0, 2, 4, 6, 8, 12, 14, 16, 18] 시작점 0(index) 끝점 9 중간점 4 으로 설정하고, 중간점과 찾고자하는 원소값이 작다면 오른쪽 범위는 볼 필요가 없다. [0, 2, 4, 6] 이렇게 탐색범위는 총 4개 줄어드는데, 시작점은 0 중간점은 1 끝점은 3이 된다. 이렇게 해도 원하는 4를 못찾았는데 이번에는 중..
정렬 알고리즘 정렬(Sorting)이란 데이터를 특정한 기준에 따라 순서대로 나열하는 것을 말합니다. 일반적으로 문제 상황에 따라서 적절한 정렬 알고리즘이 공식처럼 사용된다. 아래 리스트를 어떻게 정렬할까 ? [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] 1. 선택 정렬(selection sort) - 처리되지 않은 데이터 중 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복 : [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] 가장 작은 0을 선택해 7와 바꾼다. : [0, 5, 9, 7, 3, 1, 6, 2, 4, 8] 다음 작은 1를 선택해 5와 바꾼다. : [0, 1, 9, 7, 3, 5, 6, 2, 4, 8] 다음 작은 2을 선택해 9와 바꾼다. : [0, 1, ..
그래프 탐색 알고리즘 : DFS / BFS 탐색(search)이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 말합니다. 대표적인 그래프 탐색 알고리즘으로는 DFS와 BFS가 있습니다. DFS / BFS는 코딩 테스트에서 매우 자주 등장하는 유형이므로 반드시 숙지해야 합니다. DFS 와 BFS 알고리즘을 알아보기 전에 반드시 숙지해야할 두가지 자료구조와 재귀 함수가 있다. 1. 스택(stack) 자료구조 - 먼저 들어온 데이터가 나중에 나가는 형식(선입후출)의 자료구조입니다. - 간단하게 삽입(insert), 삭제(delete) 연산이 있는데 삽입하면 제일 끝에 쌓이고, 삭제하면 제일 뒤에 있는 데이터부터 삭제된다. python으로는 간단하게 리스트를 이용하면 된다. stack = [] stac..
그리디 알고리즘 (Greedy Algorithm) - 그리디 알고리즘(탐욕법)은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미 - 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디얼르 떠올릴 수 있는 능력을 요구 - 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는 검토하여 문제를 풀어야 한다 (모든 경우 지금 당장 좋은 것만 고르는 방법이 최고의 방법이 아니므로) 대표적으로 동전 거스름돈 문제가 있다. 500원 / 100원 / 50원 / 10원 짜리 동전이 무한히 존재하는데 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러줘야 할 동전의 최소 개수를 구하라. 단, 돈 N은 항상 10의 배수이다. N이 1,280원이라면? 500 - 2 100 - 2 50 - ..