목록전체 글 (170)
min
1. (김민승)이 생각하는 알고리즘 : 어떤 문제를 효율적으로 해결하기 위한 방법 여기서 "효율적으로"라는 말이 애매하게 들릴 수 있다. 그래서 그 효율적이라는 것을 우린 시간복잡도를 통해서 확인할 수 있다. 시간복잡도란 알고리즘이 걸린 시간을 표기하는 방식으로 빅오 표기법와 빅큐 표기법이 있다. 여기서 우린 빅오 표기법을 자주 사용하며 빅오 표기법으로는 이런 식으로 설계되어있다. 2. (김민승)이 생각하는 자료구조란 : 자료구조는 알고리즘을 구현하는데 필요한 도구라고 생각한다. 우리가 어떤 알고리즘이 굉장히 빠른 알고리즘이라고 부른다. 내가 생각하는 빠른 알고리즘은 주어진 데이터를 빨리 가져오는 것이 빠른 알고리즘이라고 생각한다. 즉 결국엔 알고리즘을 잘 구현하기 위해서는 데이터를 잘 가져올 수 있도록..
원시타입과 참조 타입 자바 스크립트의 변수 타입에는 크게 원시 타입과 참조 타입으로 나누어져 있다. 1. 원시타입 : 메모리 공간을 확보하여 독자적인 값을 저장한다. 원시타입의 종류로는 string , number, bigint , boolean, undefined, symbol 이 있다. 따라서 원시타입은 불변성을 가지게 된다. 예를 들어 다음과 같은 코드가 있다고 하자 /////////////// let a = 10 a = 5 console.log(a) /////////////// 위 코드를 실행하게 되면 5가 출력되게 된다. 위 코드를 메모리 공간에서 어떻게 작용하는 지 살펴보자 (1) let a = 10 메모리에 Number라는 타입의 10이란 값이 생성되고 식별자 a는 메모리 100의 주소를 가..
1. 사전에 알아야 할 개념들 (1) 그래프 : 여러 개쳬(노드)들이 연결된 그물망 (2) 탐색 : 여러 개체(노드)들 중에서 원하는 개체(노드)를 찾는 과정 2. DFS(depth firsh search) : 그래프 탐색 알고리즘 중 하나로 깊이 우선 탐색이라고 한다. 깊이 우선 탐색을 쉽게 이해하기 위해서 하나의 예시를 가져오겠다. 예시) A는 오늘 파리바케트에서 여러 종류의 빵들을 사왔다. 집에 와서 맛있는 빵을 남겨두고 나머지 빵들을 '하나하나씩 차례대로' 다 먹은 다음에 마지막으로 맛있는 빵을 먹었다. 여기서 a가 빵을 먹는 방법이 깊이 우선 탐색이다. 아직까지 잘 이해가 안될 것이다. 그래서 다른 예시를 준비해왔다. 예시2) A는 오늘 열심히 일을 하고 집에 와서 넷플릭스를 켰다. A는 넷플릭..
1. What? : 그리디 알고리즘이란 현재 상황에서 지금 당장 좋은 것만을 고르는 방법입니다. 쉽게 말해서 어떤 문제를 풀때 가장 "간단하게" 푸는 방식입니다. 따라서 코딩테스트에서의 그리디 알고리즘 문제를 풀때는 상황을 "극단적으로" 몰고 가서 (상황을 단순화 해서)가장 간단한 해법을 도출하는 방식으로 풀어야 합니다. 2. When? : 그리디 알고리즘은 문제에서 최댓값 또는 최솟값등 "극단적인"상황의 값(단순한 상황에서의 값)을 찾으라고 할 때 사용합니다. 3. How? : 그리디 알고리즘 문제를 풀기 위해서는 최소한의 아이디어가 필요한데 대표적인 아이디어는 "올림차순,내림차순"입니다. 하나의 예시를 살펴보도록 하겠습니다. (이코데의 그리디 알고리즘 문제에서..) 당신은 음식점의 계산을 도와주는 점..
1. Why? : 어떤 정보들을 구체적으로는 두가지의 정보들을 함께 묶음으로써 어떤 작업에 도움이 될 때 2. How? (1) 생김새(문법) example_dict = { key:value } '딕셔너리' 의 뜻을 살펴보면 이해하기 쉽습니다. 딕셔너리의 뜻은 사전으로 사전은 어떤 낱말과 그 뜻풀이로 이루어져있다. 파이썬의 딕셔너리에서 낱말은 key 이고 뜻풀이는 value 입니다. 즉 내가 어떤 자료를 단어와 그 뜻을 함께 저장하고 싶을때 쓰는 자료형이 딕셔너리 입니다. (2) 활용 exameple_dict = { "name":"어벤저스 엔드게임", "type":"히어로 무비" } # 읽기 이런 딕셔너리가 있다고 칩시다. 여기서 '어벤저스 엔드게임 즉 어떤 value를 출력하고 싶을때는 어떻게 해야 할까..
리스트형 자료 활용 : 리스트형 자료도 문자형 자료와 마찬가지로 여러 연산이 존재한다. 오늘은 리스트형 자료의 여러 연산자를 살펴보는 시간을 갖도록 하겠다. #리스트 연산자 리스트에는 +와 *의 연산자가 존재한다. list_a = [1,2,3] list_b = [4,5,6] a = list_a + list_b b = list_a*3 위 코드에서 a와 b를 출력하면 어떻게 될까? 출력해보면 아마 a = [1,2,3,4,5,6] , b = [1,2,3,1,2,3,1,2,3] 으로 출력될 것이다. 여기서 알 수 있는 사실은 리스트 연산자는 문자 연산자와 기능이 동일 하다는 것을 알 수 있다. #리스트 내부 함수 1. 리스트 안에 요소 추가 함수 (1)append(), insert() : 위 함수들은 한번에 하..
리스트 : 자료를 담는 자료(말이 어려운데 쉽게 말해서 여러 자료들을 모으는 보따리 라고 생각하면 된다.) when? : "여러개"의 자료들을 "하나"의 자료로 치환하고 싶을때 how? array = [273,32,103,"문자열",True,False] 이런 형식으로 사용한다. #리스트의 인덱싱 리스트의 인덱싱은 문자형 자료의 인덱싱과 형식이 동일하다. print(array[0]) print(array[1]) print(array[2]) print(array[3]) print(array[4]) print(array[5]) #리스트 변경 array[0] = '변경' print(array) 출력결과에서 273이 '변경'으로 변경된 것을 확인할 수 있다. #이중 리스트 : 리스트 안에 리스트를 사용하는 것 l..
1. 문자형 자료의 특징 파이썬을 배우면 가장 먼저 작성하는 코드가 있다. 바로 이 코드 이다. print("hello world") 모든 사람들이 처음에는 아무 생각없이 위 코드를 치고 터미널창에 hello world가 출력되는 것을 보고 벅차오르는 감정을 느낀다.(필자가 그랬다...!) 근데 사실 위 코드에는 많은 정보가 함축되어있다. 먼저 print()는 함수이며 정확하게는 출력함수라고 하며 괄호 안에는 자료가 들어간다. 여기서 한가지 팁을 알려준다면 어떤 문자열뒤에 괄호가 붙으면 함수라는 것을 뜻한다,(왜냐하면 ()가 함수의 입구를 뜻하기 때문이다.) 그렇다면 "hello world"가 자료라고 했는데 어떤 자료일까? 바로 문자형 자료이다. 왜냐하면 문자형 자료의 경우 " "로 감싸져 있는 특징이..