-
let vs const [ES6] :: 마이구미Javascript 2017. 2. 24. 15:49
이번 글은 es6에서 제공하는 let과 const 키워드에 대해 다뤄본다.글의 이해에 도움이 되는 이전 글을 읽기를 바란다. (function scope vs block scope)원본 글을 번역하여 작성하였다. 이전 글에서 언급했듯이 var는 function scope, let과 const는 block scope를 의미한다. 같은 scope 내부에서 선언된 변수들을 보자. const key = 'abc123';let points = 50;let winner = false; 위 코드에서 우리는 winner 변수를 다시 선언해보자. let winner = true; 무슨 결과가 나올까?우리가 알고 있기로는 문제가 없는 코드이다.var를 통해 변수 선언의 경우에는 같은 변수로 처리가 되기 때문이다.이러한 경..
-
function scope VS block scope :: 마이구미Javascript 2017. 2. 23. 23:08
이번 글은 function scope와 block scope를 다뤄본다.es6에서 let과 const 키워드를 다루기 위한 필요한 지식들을 위한 글이다.자바스크립트에서 변수 선언시 var 키워드를 사용한다는 것을 알고 있다.아직까지는 es5를 대부분 사용한다. (잘 모른다면 현재 사용하거나 책에서 보는 것들이 es5)하지만 점차 es6를 접하고 있고 훨씬 빠른 속도로 지향할 것으로 생각한다. es6에서는 var 키워드만을 사용하지 않고, let, const가 추가되었다.var 와 let, const의 차이점은 크게 유효 범위(scope) 라고 볼 수 있다.var는 function scope이고, let, const는 block scope이다.function scope는 함수(function) 단위, bl..
-
동전 교환 관련 문제 접근 :: 마이구미알고리즘 2017. 2. 23. 12:07
이번 글은 "동전 교환" 에 관한 알고리즘을 다뤄볼 것이다.백준 알고리즘 사이트에서 알고리즘 분류에서 "동전 교환"을 볼 수 있다.2293번 동전 1, 2294번 동전 2, 11047번 동전 0 문제를 통해 다룬다.동전 0 - https://www.acmicpc.net/problem/11047동전 1 - https://www.acmicpc.net/problem/2293동전 2 - https://www.acmicpc.net/problem/2294 n가지 종류의 동전이 있다. 각각의 동전이 나타내는 가치는 다르다. 이 동전들을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그 경우의 수를 구하시오. (각각의 동전은 몇 개라도 사용할 수 있다.) 생각해볼 수 있는 방법은 각 동전에 대한 경우의 ..
-
백준 1309번 동물원 [DP] :: 마이구미알고리즘 풀이/동적계획법 2017. 2. 17. 22:38
이번 글은 백준 알고리즘 문제 1309번 "동물원"을 다뤄본다. 이 문제의 접근법은 동적계획법 즉, DP이다. 어떤 동물원에 가로로 두칸 세로로 N칸인 아래와 같은 우리가 있다. 이 동물원에는 사자들이 살고 있는데 사자들을 우리에 가둘 때, 가로로도 세로로도 붙어 있게 배치할 수는 없다. 이 동물원 조련사는 사자들의 배치 문제 때문에 골머리를 앓고 있다. 동물원 조련사의 머리가 아프지 않도록 우리가 2*N 배열에 사자를 배치하는 경우의 수가 몇 가지인지를 알아내는 프로그램을 작성해 주도록 하자. 사자를 한 마리도 배치하지 않는 경우도 하나의 경우의 수로 친다고 가정한다. 문제의 포인트는 가로, 세로로 붙어서 배치할 수 없고, 배열은 2 * N 배열이다. 배치할 수 있는 경우는 가로나 세로가 붙어있지만 않..
-
백준 3745번 오름세 [LIS] :: 마이구미알고리즘 풀이/동적계획법 2017. 2. 17. 16:00
이번 글은 백준 알고리즘 문제 3745번 "오름세"를 다뤄본다.문제의 접근은 LIS(최장 증가 부분 수열) 알고리즘 문제이다.LIS O(nlogn) - http://mygumi.tistory.com/303 본인은 LIS 알고리즘을 다룬 글이 있다. (관련 글)관련 글은 시간 복잡도 O(n^2)으로 문제를 해결했다. 오름세 문제는 O(n^2)으로는 문제를 해결할 수 없다.시간초과를 초래하니 LIS의 또 다른 접근 방식으로 문제를 해결한다. 이번에 다룰 LIS의 시간복잡도는 O(nlogn)을 가진다.이분 탐색 또는 이진 탐색이라고 불리는 알고리즘을 이용하는 방식이다. (관련 글) 전체적인 의사코드로 표현하면 아래와 같다. // nums - 주어진 수열for each num in nums if(list.siz..
-
LCS(최장 공통 부분 수열) 알고리즘 :: 마이구미알고리즘 2017. 2. 17. 15:09
이번 글은 LCS(Longest Common Subsequence) 알고리즘은 다뤄본다. 최장 공통 부분 수열(LCS)은 LIS 최장 증가 부분 수열과 비슷하게 생각하면 된다.LCS 또한 LIS와 같이 DP(동적 계획법)을 기반으로 한다.LCS 알고리즘을 통해 두개의 문자열을 비교하여 공통 부분 수열의 길이를 구할 수 있다. 주의할 점은 LCS는 Longest Common Substring과 Longest Common Subsequence이 존재한다.공통 부분 문자열(Longest Common Substring), 공통 부분 수열(Longest Common Subsequence)이라고 말할 수 있다.2개는 다른 의미를 가지고 있기 때문에 구분해야한다.차이점은 연속 여부이다. 최장 공통 문자열의 길이는 3..
-
Java 객체 지향 프로그래밍 개념 :: 마이구미Java 2017. 2. 14. 21:54
이번 글은 원본 글을 번역하여 객체 지향 프로그래밍(OOP) 에 대한 기본 개념을 다뤄본다. 예제들과 함께 JAVA의 OOP의 개념에 대해 이해하는 데 도움이 될 것이다.OOP의 특징들에 대해 알아보자. OOP의 작성은 클래스를 만들고, 생성된 클래스를 객체로 만들고, 이 객체를 사용하여 독립형 실행 프로그램인 응용 프로그램을 만드는 것이 포함된다. 클래스는 객체의 데이터 필드와 메소드가 무엇인지 정의하는 template, blueprint, contract 를 의미한다.객체는 클래스의 인스턴스이고, 클래스는 많은 수의 인스턴스를 생성할 수 있다. 여기서 클래스, 객체, 인스턴스를 짚고 가자. // Person 클래스 class Person {// ......} Person p; // Person 타입의..
-
백준 10610번 30 [배수 판정법] :: 마이구미알고리즘 풀이/수학 2017. 2. 13. 16:02
이번 글은 백준 알고리즘 10610번 "30" 을 다뤄본다.이 문제는 배수 판정법을 활용해서 문제를 해결할 수 있다.일단 먼저 문제를 보자. 어느날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다.미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. (그 수가 존재한다면) 주어지는 수에 대해 섞은 모든 경우에서 30의 배수가 되는 가장 큰 수를 찾는 문제다.예를 들어보자. 120과 210이 30의 배수이지만 가장 큰 수는 210이기 때문에 정답은 210이다.이 문제를 배수판정법을 통해 해결해보자. 3의 배수 판정법에 의하면, 모든 자리 수의 합이 3..