일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코테
- Trie
- 전자공학
- 코딩테스트
- 이산신호처리
- IOS
- backjoon
- 코테준비
- dft
- DSP
- 릿코드
- 알고리즘 문제풀이
- SWIFTUI
- 컨볼루션
- 알고리즘문제풀이
- 독서노트
- 신호처리
- 카카오 코딩테스트
- PYTHON
- DTFT
- 파이썬
- leetcode
- 백준
- 프로그래머스
- Leet Coding Challenge
- 스위프트
- 알고리즘
- 트라이
- leet code
- SWIFT
- Today
- Total
목록개발관련 (23)
매일 매일 성장하는 섭섭군
Trie(트라이) Trie의 개요 Trie 는 트리 자료구조 중 하나이다. 특히 여러개의 문자열을 저장하는 자료구조인데 특정 문자열을 검색할 때 효율적이다. 가령 최대 길이가 m인 문자열 n개가 있는 집합에서 길이가 m인 임의의 문자열이 있는지 확인하려면 어떻게 해야할까? 단순히 직관적인 방법으로 하나씩 꺼내서 비교하면 된다. 하지만 최악의 경우 O(nm)의 시간복잡도가 소요된다. 그렇다면 Trie는 어떻게 문자열을 저장하길레 문자열을 검색할때 효율적일까? 바로 우리가 사전에서 단어를 찾듯이 문자열을 저장한다. 우리는 사전에서 "Apple"이란 단어를 찾을 때 다음과 같이 찾을것이다. 1. A가 있는 곳을 찾는다. 2. 두번째 글자가 p인 곳을 찾고 세번째가 p인 곳을 찾는다. 3. 마지막 글자까리 위와..
Hash(해시) Hash란? Hash가 무엇일까? 사전에서 Hash의 뜻을 보면 다음과 같다. Hash 1. 해시(고기와 감자를 잘게 다져 섞어 요리한것) -> 아마 해시브라운 같은것일까?? 2. 전화기에서의 우물정자(#) -> 해시테그 여기에서 나온것!!그냥 일반적인 뜻으로는 전혀 컴퓨터와 관련이 없을것 같다. 하지만 숙어를 살펴보면 대략 감을 잡을 수 있다. - make a hash of something : ~를 엉망으로 하다뭔가를 엉망으로 만든다! 그렇다 해시함수는 들어온 입력에 대해서 출력을 엉망으로 만들어버린다. 해시는 암호화 기법중 한가지이다. 그래서 원래 정보를 잘 숨겨야 하는데 이를 엉망으로 만들어 알아 볼 수 없게 만든다면 보다 암호화 하는데 용이할 것이다. 간결하게 해시를 표현한다면 ..
Stack & Que Stack(스택) 스택이란? Stack 이란 무엇일까? 사전에서 검색해보면 다음과 같이 나온다. 1. (보통 깔끔하게 잘 정돈된) 무더기 2. 많음, 다량 3. (깔끔하게 정돈하여) 쌓다, 쌀이다, 포개지다.사전적 의미에서 잘 알 수 있듯이 스택은 무엇인가를 잘 쌓아 올린것이다. 컴퓨터에서는 무엇을 쌓아 올릴까? 대표적으로 메모리를 쌓아올린다. 그렇다면 어떻게 쌓아 올릴까? 스택의 과정 스택은 LIFO(Last In First Out) 구조를 따른다. 즉 마지막으로 넣은 데이터가 먼저 출력된다는 의미이다. 다음 그림을 살펴보자! 1칸당 1byte씩 총 4byte가 있는 메모리가 있다. 지금은 빈 메모리이지만 이곳에 메모리가 하나 둘씩 추가될 것이다. 이 메모리 구조는 아래에서부터 차..
오픈소스 소프트웨어의 라이센스의 종류 오픈소스 소프트웨어란? SW 공부를 어느정도 했다면 오픈소스라는 단어는 한번쯤 들어봤을 것이라 생각된다. 위키피티디아에 따르면 오픈소스 소프트웨어는 소스코드를 공개해 누구나 특별한 제한 없이 그 코드를 보고 사용할 수 있는 오픈소스 라이선스를 만족하는 소프트웨어를 말한다. 여기서 중요한게 오픈소스 라이선스이다. 다 같은 오픈소스라고 해서 가져다 쓰고 이를 상업적 및 다른 목적으로 이용 할 수 없을 수 있다. 오픈소스 라이센스의 종류 먼저 라이센스를 통해서 어떤것들을 제한하며 허용하는 것일까?(대표적인 것들 일부만 적어봤습니다.) 복제, 배포, 수정의 권한 허용 배포시 소스코드 공개의 의무 저작권 표시의 의무 코드에 대한 보증, 책임의 유무 이것들 이외에도 많은 내용들..
First Class Citizen (일급 객채) 함수형 프로그래밍을 공부하다가 처음 듣게 된 말이다. 그리고 굉장히 자주 나온다. First Class Citizen은 다음 조건을 만족하는 객체를 의미한다. 1. 변수나 상수에 저장 및 할당 할 수 있어야 한다. 2. 파라미터(객체의 인자)로 전달 할 수 있어야 한다. 3. 함수(객체)에서 return 할 수 있어야 한다. 글로만 보면 이해가 잘 가질 않으니 코드와 함께 보도록 하겠습니다. Swift의 함수는 1급객체임으로 Swift 기반으로 작성하였습니다. 1. 변수나 상수에 저장 및 할당 할 수 있어야 한다. func firstClassCitizen(test: String) -> String { print("1") return test } let f..
Functional Programming(함수형 프로그래밍) Functional Programming을 공부하기에 앞서 함수형프로그래밍을 공부하기 전에는 그저 함수를 이용한 프로그래밍 정도라고만 생각했다. 그저 자주 사용하는 기능들을 함수로 만들어 사용하는 정도로 말이다. 일부는 맞을수도 있지만 함수형프로그래밍은 내가 이전에 해왔던 함수를 사용하면서 프로그래밍하기는 아닌것 같다. 함수형 프로그래밍을 이해하기 위해서 그 이전에 해오던 것이 어떤건지부터 살펴봐야겠다. 프로그래밍 패러다임을 찾아보니 크게 함수형과 명령형 프로그래밍으로 나뉘는것 같다. 먼저 함수형과 명령형 프로그래밍의 차이점을 살펴보자! 명령형 프로그래밍 vs 선언형 프로그래밍 두 프로그래밍의 차이를 한문장으로 말하면 다음과 같을것 같습니다. ..
객체지향프로그래밍(Object Oriented Programming) 객체지향프로그래밍 흔히들 OOP라고 많이들 부른다. 대학에서도 접하고 여러 프로그래밍 언어들에서 들었기 때문에 대충 이런거구나 라는 감은 잡히지만 여전히 한문장으로 설명하기에는 힘든 개념이다. 특히 객체라는 것을 설명하기가 어렵다.(공돌이라 그런것 같기도 하다.) 사전에 Object와 Oriented를 검색해보았다. 다음과 같이 나온다. Object : 1. 물건, 물체 2. 욕망, 연구, 관심등의 대상 3. 목표, 목적 Oriented : ~위주의, 지향적인 단순히 해석하면 목적 위주의 프로그래밍 이라는 생각이 든다. 하나의 프로그램은 여러개의 함수와 변수들로 이루어진 집합이다. 프로그램이 커지고 복잡해 질수록 함수와 변수들은 더 많..