본문 바로가기

분류 전체보기

(30)
[리뷰]면접을 위한 CS 전공지식 노트 이 책은 취업을 준비하는 개발자 외에도 개발을 하는 사람들에게 꼭 필요한 지식을 담고 있습니다. 디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료구조 크게 다섯가지로 정리되어 있고 마지막은 포트폴리오와 면접에 대한 팁이 적혀있습니다. 개발자로 취업을 준비하다 보면 준비해야 하는게 너무 많습니다. 코딩테스트는 기본이고 cs 면접을 위해 학부 때 공부했던 전공 수업 과목들을 다시 공부해야 하죠. 하지만 취업 준비 기간 동안 전공 과목까지 꼼꼼히 공부하는건 불가능에 가깝습니다. 저도 현재 취업 준비생인데, 취업을 준비하면서 cs 면접이 가장 막막했습니다. 어떤 포인트를 주로 물어보는지, 어느 과목을 중점적으로 공부해야 하는지 정보도 찾기가 힘들었고 어려운 난이도에 분량까지 정말 많은 과목들이었습니다. 인..
[백준] 17608.막대기 import sys def stick(nums): stk=[] stk.append(len(nums)-1) max=nums[-1] for i in range(len(nums)-2,-1,-1): #(len,0,-1)을 하면 0 이전까지만 포함되서 맨 처음 element엔 접근을 안함 if nums[i]>max: stk.append(i) max=nums[i] return len(stk) n=int(sys.stdin.readline()) nums=[int(input()) for _ in range(n)] #공백이 기준이 아닌 \n이 기준일 때 print(stick(nums)) stack을 써보고 싶어서 이렇게 코드를 짰는데 시간초과가 나왔다. 결과는 숫자 하나면 되는데 괜히 리스트를 하나 더 많들어서 스택연산을..
[Leetcode]125.Valid Palindrome def isPalundrome(s): strs=[] for char in s: if char.isalnum(): #영문자,숫자 여부를 판별하는 함수 strs.append(char.lower()) #대소문자 구분 안함 while len(str)>1: #홀수 고려해서 1 if strs.pop(0) != strs.pop(): #리스트의 pop은 인덱스를 지정할 수 있음 return False return True import collection def isPalundrome(s): strs=collection.deque() for char in s: if char.isalnum(): strs.append(char.lower()) while len(str)>1: if strs.popleft() != strs.p..
[Leetcode] 17. Letter Combinations of a Phone Number DFS와 백트랙킹 깊이 우선 탐색(DFS)DFS는 가능한 모든 경로(후보)를 탐색합니다. 따라서, 불필요할 것 같은 경로를 사전에 차단하거나 하는 등의 행동이 없으므로 경우의 수를 줄이지 못합니다.따라서 N! 가지의 경우의 수를 가진 문제는 DFS로 처리가 불가능할 것입니다. 백트랙킹 해를 찾아가는 도중, 지금의 경로가 해가 될 것 같지 않으면 그 경로를 더이상 가지 않고 되돌아갑니다. 즉, 코딩에서는 반복문의 횟수까지 줄일 수 있으므로 효율적입니다. 이를 가지치기라고 하는데, 불필요한 부분을 쳐내고 최대한 올바른 쪽으로 간다는 의미입니다. 일반적으로, 불필요한 경로를 조기에 차단할 수 있게 되어 경우의 수가 줄어들지만, 만약 N!의 경우의 수를 가진 문제에서 최악의 경우에는 여전히 지수함수 시간을 필요..
Activation Function(활성화 함수) 시그모이드 함수(Sigmoid function) 퍼셉트론과 신경망의 주된 차이는 활성화 함수이다. 퍼셉트론에서는 활성화 함수로 계단함수를 이용한다. 계단함수의 코드 구현은 다음과 같다. def step_function(x): y=x>0 return y.astype(np.int) def step_function(x): return np.array(x>0, dtype=np.int) 반면 신경망에서는 시그모이드 함수를 자주 사용한다. 시그모이드 함수가 어떻게 나왔는지 알아보자. 일어날 확률 : P(X) 일어나지 않을 확률 : 1−P(X) 0≤P(X)≤1 위와 같이 P(X)를 정의 하자. 그러면 Odds Ratio로 나타 낼 수 있다. 위 수식은 해당 사건이 일어날 확률과 일어나지 않을 확률의 비율 즉 odds..
Lambda Function 람다(Lambda) 함수 파이썬에서는 람다함수를 통해 이름이 없는 함수를 만들 수 있습니다. 람다함수의 장점은 코드의 간결함 메모리의 절약이라고 생각할 수 있습니다. def키워드를 통해서 함수를 생성하는 방법은 리터럴 표기법에 따른 함수 생성 방법입니다. 함수 또한 클래스를 통해 생성된 객체 인스턴스입니다. def my_func(): pass 위에 함수를 생성자를 통해 생성하는 방법을 간단하게 표현하면 다음과 같습니다. my_func = function(code, globals[, name[, argdefs[, closure]]]) 코드와 이름을 담아서 함수클래스를 통해서 객체를 생성하고, 그 객체를 함수이름과 동일한 변수에 담는과정을 def키워드가 대신해줍니다. 함수객체를 변수에 담은 시점에서, 함수객..
[자료구조] Node 관리할 데이터를 보관(존재)하는 곳을 노드(Node)라 합니다. 즉, 자료구조에서 관리하고있는 정보들 중 하나를 저장하고 있는 단위입니다. 대체로 자료구조를 공부할 때 이 노드를 클래스로 직접 구현합니다. 하지만 자료구조에서 구조적 설계보다 연산(메소드)이나 연산으로 인한 구조적 변화에 학습을 집중해야될 때는 노드를 따로 구현하지 않습니다. 이 경우 기본적으로 제공하는 자료형(대표적으로 리스트)으로 주로 진행합니다. 이미 리스트에는 노드가 value로서 구현되있으니까요. 데이터와 다른 노드에 대한 하나의 링크가 포함된 기본 노드를 구현해보겠습니다. 노드를 생성할 때 노드의 데이터가 지정되고, 변경할 수 없습니다. 링크는 초기화 시 선택 사항이며 없데이트 될 수 있습니다. 마지막 노드의 링크는 null을 ..
Map함수 map(function,iteration) 첫 번째 매개변수로는 함수, 두 번째 매개변수로 반복 가능한 자료형(리스트, 튜플 등)이 옵니다. map 함수의 반환 값은 map 객체이기 때문에 해당 자료형을 list 혹은 tuple로 변환시켜줘야 합니다. 두 번째 인자로 들어온 반복 가능한 자료형을 첫 번째 인자에 들어온 함수에 하나씩 집어넣어서 함수를 수행시킵니다 myList = [1, 2, 3, 4, 5] def add_one(n): return n + 1 result = list(map(add_one, myList)) # map반환을 list 로 변환 print(f'result : {result}') result : [2,3,4,5,6] 위 예시와 같이 리스트 각 요소에 1을 더해서 새로운 리스트로 만..