본문 바로가기

728x90

전체 글

(372)
동적 계획법(dynamic programming) 알아보기 동적 프로그래밍은 큰 문제를 작은 문제로 나누어 푸는 문제입니다. 분할 정복과는 어떤 차이가 있을까? 사실 거의 비슷하지만 작은 문제가 중복이 일어나는지 안 일어나는지에서 큰 차이가 있습니다. 분할 정복은 큰 문제를 해결하기 어려워 작은 문제로 나누어 푸는 방법, 구체적으로 문제를 나눌 수 없을 때까지 나누어서 각각을 푸는 방법입니다. 대표적으로 병합 정렬이 있습니다. 동적 프로그래밍은 작은 부분 문제들의 반복으로 푸는 방법입니다. 동적 프로그래밍의 대표적인 기법 중에 메모이제이션이 있습니다. 한 번 계산한 작은 문제를 저장해놓고 다시 사용합니다. 피보나치수열을 예로 들어 보면 점화식은 '다음 수열=이전 수열+ 전전 수열'입니다. 3번째 숫자를 구하기 위해서는 1번째와 2번째 숫자가 필요합니다. 그리고 ..
pandas pd.read_csv 활용법 na_value로 100% 활용하자 pandas pd.read_csv는 csv파일을 pandas의 데이터프레임 형태로 바꿔주는 함수입니다. csv를 데이터 프레임으로 바꾸고 전처리할 때 가장 힘든 부분이 예측할 수 없는 데이터 값들 입니다. nan값이 있는 것은 괜찮지만 뜬금없이 float 타입의 column에 ':' 값이 있을 수도 있고 데이터를 처리할 때 수 많은 에러를 발생시킬 수 있는 값들이 존재한다. 이 값들을 발견할 때 마다 일일히 replace하는 것은 상당히 귀찮은 일이다. pd.read_csv()의 인자인 na_values는 이 복잡한 과정을 한 번에 끝내주는 편리한 도구이다. na_values에 들어있는 값들은 csv파일을 불러올 때 자동으로 nan값으로 변경된다. 때문에 dropna(),fillna()등으로 한 번에 결..
vuex actions, getters, map helper 간단 정리 오늘은 vuex의 actions, getters, map helper에 대해 공부해보도록 하겠습니다. actions : 비동기 처리할 때 사용하는 부분이다. 예를 들어 api를 사용한다고 했을 때 비동기 처리가 반드시 필요합니다. 이때 actions에 비동기 처리를 할 수 있습니다. 아래코드는 mutations와 actions입니다. actions에서 jsonplaceholder에 users라는 값을 요청하면 요청 값이 반환되었을 때 그것을 res에 담고 그 후 commit을 통해 GETUSERS를 호출해줍니다. 동기적으로 진행한다면 GETUSERS에 데이터가 전달되지 않을 것입니다. actions는 아래와 같이 axios와 같이 사용하는 경우가 많습니다. then뒤에 mutation을 호출해 state..
vue js vuex의 필요성 state, mutations 부모-자식-손자 컴포넌트가 있다고 할 때, 손자에서 부모로 데이터를 보낸다고 하자. 그렇게 되면 손자에서 자식으로 데이터를 보내고 자식에서 부모로 데이터를 보내야 한다. 이는 매우 비효율적이다. 코드도 매우 복잡해진다. 이런 불편함을 겪는 분들에게 vuex는 신세계를 열어준다. vuex는 데이터를 담아두는 store를 사용하기 때문에 데이터를 효율적으로 관리할 수 있다. vuex의 state에서 데이터를 관리할 수 있다. props를 더 이상 사용할 필요가 없게 된다. computed안에서 사용하면 된다. mutations로 어떤 컴포넌트에서도 store의 state에 접근할 수 있다. 아래 코드는 store이다. state에 데이터가 있고 해당 데이터를 mutations에서 접근할 수 있다. impor..
정규 표현식 파이썬 쓰는 이유와 예제 오늘은 정규표현식을 쓰는 이유와 예시에 대해 알아보도록 하겠습니다. 정규 표현식을 쓰는 이유는 간단하다. 문자열 데이터에서 보다 효과적인 검색을 위해서 정규표현식을 사용하는 것이다. 바로 예제로 알아보도록 하자. From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008 Return-Path: Received: from murder (mail.umich.edu [141.211.14.90]) by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA; Sat, 05 Jan 2008 09:14:16 -0500 X-Sieve: CMU Sieve 2.3 Received: from murder ([unix socket]) by m..
동적 계획법 백준 예제로 배워보기 동적 계획법은 전체 문제를 작은 문제로 나누고 이를 점화식으로 만들어 재귀로 문제를 해결하는 알고리즘입니다. 1. 부분 문제를 정의한다. 2. 점화식을 만든다. 3. 작은 문제를 해결한 방법으로 전체 문제를 해결한다. www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 1로만들기 문제를 예제로 한 번 살펴보도록 하겠습니다. 정답률이 30%대인 어려운 문제입니다. 1. 부분 문제를 정의해 보도록 하겠습니다. 1로 만들기 위해서는 3으로 나누거나 2로 나누거나 1로 빼주어야 합니다. 어떤 것이 최소 연산 횟수를 보장하는지 알 수 없기 때문에 각각으로 경로를 나누어 최소 경로를 찾..
vue js todo 리스트 튜토리얼(2) 오늘은 체크박스를 누르면 줄이 그어지고 삭제 버튼을 누르면 리스트가 사라지는 기능을 구현해보도록 하겠습니다. 아래와 같이 체크 박스를 누르면 중간에 줄이그어지고 색이 변합니다. 삭제 버튼을 누르면 사라집니다. 아래 코드는 todo.vue 자식 컴포넌트입니다. {{todo.text}} Delete app.vue 부모 컴포넌트입니다. Todo App 흐름은 다음과 같습니다. 자식 컴포넌트에서 체크박스가 체크되면 emit을 통해 부모 컴포넌트로 데이터를 보내고 checked:false를 true로 바꾼다. 그러고 나면 다시 자식 컴포넌트에서 부모 컴포넌트로부터 props를 통해 데이터를 받아 todo.checked가 true가 되고 span 태그 안의 class, style binding에서 앞에 있는 'te..
vue js todo 리스트 튜토리얼(1) vue js를 이용해 todo 리스트를 만들어보도록 하겠습니다. vue js와 bootstrap을 통해 만들어보도록 하겠습니다. 해당 튜토리얼은 vuejs의 아주 기초적인 개념은 알고 계셔야 할 수 있습니다. v-for, components 등 기본적인 개념을 숙지하신 분들에게 권하고 싶네요. cmd에서 vue create todo를 입력해 프로젝트를 생성해주세요. 설정은 default를 선택해주시면 됩니다. 다 생성되면 아래와 같은 파일들이 생성됩니다. 오늘 구현할 내용입니다. 기본 todolis가 체크 박스로 나오고 input 태그에 값을 입력하고 엔터를 누르면 해당 값이 todolist에 나옵니다. vuejs는 프론트앤드에서 작동하는 언어이다 보니 데이터 베이스에 변화는 없습니다. 다시 껐다 키면 ..

728x90