프로그래밍 294

tryhello 줄 서는 방법 feat. Algorithm Study

알고리즘 스터디를 진행하면서, 오늘 처럼 놀라운 경험을 한 적 처음인 것 같다. 줄 서는 방법 이라는 문제를 진행하는데, 나는 그냥 라이브러리를 이용해 풀었는데, 스터디원 2분이서 새로운 효율적인 생각? 알고리즘 설계를 하셨다. 문제는 다음과 같다. N명의 사람이 있을 때, N명의 사람을 서로 다른 방법으로 줄을 세우는 방법은 N!개가 존재합니다.이 때 각각의 사람들에게 번호를 매겨서 줄을 서는 방법을 표시합니다. 예를들어 [1,2,3,4]는 1번 사람이 제일 앞에, 2번 사람이 2두번째에... 서 있는 상태를 나타냅니다.이러한 각각의 방법을 사전순으로 정렬했을때 K번째 방법으로 줄을 세우는 방법을 찾아 보려고 합니다.예를 들어 3명의 사람이 있다면 총 6개의 방법은 다음과 같이 정렬할 수 있습니다.1번..

Java 8 시작 하기

Edit Java 8 시작하기 언어:JAVA 티스토리 도대체 왜 함수형인가? 사실 필자도 함수형을 잘 모른다. 왜냐? Java8도 아직 잘 모른다. 내가 경헌한 건 JavaScript, Python, Ruby 정도에서 First Class Function이 유사하게 가능하다는 느낌정도? 물론, JavaScript는 충분히 느낄수 있는 일급 객체를 지원한다. 요즘 대세인 Scala, Closure등 여러가지 함수형 언어가 실무에서도 쓰이고 있는 실정이다. 자, 그럼 자바에서 도대체 뭐가 바뀐 건지 천천히 따라가보자. 첫 째는 람다의 등장이다. 많은 언어에서 람다를 이미 지원 해주었다. ( ㅠㅠ 자바는 업데이트가 최소 8년은 늦었다…)C#에 이미 많은 부분에서 지고 있는 실정… 사례로 한 번 알아보자 - 람..

무방향 그래프 - DFS/BFS

DFS/BFS는 순회 알고리즘이라고 할 수 있습니多. 주로, 트리, 그래프에서 사용 됩니다. 혹은 특정 문제를 풀기 위한 해법이기도 하죠 ? DFS는 Depth-First-Search로 불리며 한국어로는 깊이 우선 탐색이라고 합니다. 즉, 무조건 깊이 깊이~ 우선 탐색을 하죠. 그리고 BFS는 Breadth-First Search로 불리며, 너비 우선 탐색이라고 합니다. 말 그대로 너비를 우선적으로 탐색하죠. 뭐든 말로는 제일 쉽죠…(개발자는 힘드렁…) 아래 소스는 DFS/BFS 문제에 대한 풀이입니다. https://www.acmicpc.net/problem/1260 물론 이 문제를 풀기 위해선 아래의 코드를 살짝 손 봐야 합니다.

생활코딩 - Server Side JavaScript 4

생활 코딩 Server Side Language - NodeJS4강정적 페이지 vs 동적 페이지정적 페이지 한 번 만들면, 계속 같은 내용을 담고 있음.파일을 수정해도 서버를 재시작 할 필요 없이 바로 반영 된다.코딩적인 방법으로 HTML코드를 동적으로 활용 할 수 없다.동적 페이지 만들 때마다 내용이 변경 됨.JavaScript 코드내에서 HTML코드를 작성하는 것은 지저분하다.이미지, css파일을 로딩 시킬 때는 Express 기본 미들웨어 함수인 static 사용//default middleware function - static app.use(express.static('public')); static.html file Hello, Static coding coding coding coding c..

생활코딩 - Server Side JavaScript 3

생활 코딩 Server Side Language3강콜백이란? (Callback)쉽게 말하자면, 콜백이란 다른 함수의 인수로 실행 가능한 코드 블럭(이를 테면 함수)을 전달하여 전달 받은 함수에서는 콜백함수를 실행 할 수도 하지 않을 수도 있다. 결론적으로 말하자면, 콜백은 함수를 인수로 넘기는 것을 말한다. 콜백이 가능하려면 언어 자체에서 First-Class(일급 객체)여야 가능하다. Lambda형식으로 인수를 넘기는 것도 결국은 익명함수라 할 수 있다. a = [3,1,2]; function comp(v1, v2){ return v2-v1; } a.sort(comp); console.log(a); a = [3,1,2]; a.sort(function(v1,v2){return v2-v1;}); //sor..

Algorithm Study 1 - 2주차

코딩클럽 알고리즘 2주차 - 탐색, 정렬탐색 수행 능력을 평가하기 위해서는 메모리로부터 자료를 가져오는(fetch) 시간보다 자료들을 비교하는 데 걸리는 시간이 더 많이 소모되므로, 비교횟수( number of comparison )를 탐색 방법의 평가 기준으로 삼는다. 즉, 비교횟수가 적은 알고리즘일수록 좋은 성능을 보여준다고 가정한다.왜????데이터 양이 많아 지면 많을 수록 비교 횟수는 시간 복잡도를 잡아 먹는 원인 중 하나이기 때문에 비교 횟수가 적은 알고리즘이 탐색 및 정렬 알고리즘에 있어서 가장 중요하다. 비교 횟수가 증가 할 수록 시간 또한 증가 된다.탐색탐색이란, 원하는 값을 찾는 행위를 말한다. 컴퓨터 전산학에서는 탐색을 자료 구조에서 보통 값을 찾는 데 사용한다. 물론, 우리가 사용하는..

Algorithm Study 1 - 1주차

Ed외부:활동 티스토리 알고리즘 스터디 - 1일차 4/30(토) 알고리즘 스터디1 자료구조란 무엇일까? A) 일련의 자료를 집합형태로 쌓을 수 있는 구조를 말한다고 생각한다. 실생활에서 장에 그릇을 놓는 다면 찬장, 책을 모아 두면 책장이 되는 것 처럼 ‘틀’이라고 생각 할 수 있다. 그런 의미로 볼 수 있다고 생각한다. 컴퓨터로 치면 데이터 집합인 배열, 리스트 등등도 그러한 경우 결국 어떤 용도로 쓸 것인지가 중요하다. 결국 자료구조의 용도는 무엇을 담을지에 대한 초점이다. 팀원) 사용하기 편하게 & 빠르게 만드는게 자료구조. - 효율성 위주 ( 목적성 위주로 생각해도 될 것 같다.) 자료구조를 왜 사용할까? A) 나는 프로그래머의 편의성인 것 같다. 우선 컴퓨터 프로그래밍에서 자료구조가 생긴 이유는..

Java BigInteger class 사용하기

Edit 주로 int 형 타입을 사용하게 되는데, 이 정수형 타입은 허용 가능한 범위가 존재합니다. 그럴때는 Java 언어에서 지원하는 BigInteger Class, BigDecimal Class를 사용할 수 있습니다. 해당 클래스 또한 표현 가능한 범위가 있는 것으로 알고 있는데, 대략 100억은 가볍게 표현 가능합니다.사용하는 방법은 간단합니다. (참고로 Class가 무엇인지, API가 무엇인지는 알고 계셔야 합니다.) 1. public void longNumberSum(long x, long y) 2. { 3. BigInteger a = BigInteger.valueOf(x); 4. BigInteger b = BigInteger.valueOf(y); 5. BigInteger result = a.a..

생활코딩 - Server Side JavaScript 2

생활 코딩 Server Side Language2강인터넷의 동작 방법클라이언트 서비스 요청서버 서비스 응답쉽게 말해 웹 브라우저가 설치 된 컴퓨터가 클라이언트로 정의 할 수 있다. 그리고 사용자가 특정 웹 싸이트를 요청하게 된다. 서버는 사용자가 요청한 서비스에 대해 응답하는 역할을 한다.서버 컴퓨터에 안에는 여러 서버 어플리케이션(예를 들어 채팅 서버, 웹서버, 게임 서버)이 동작 중이다. 그렇다면, 서버 어플리케이션 중 누가 ? 응답 해줄지 결정 하는지에 대해 알아보자.컴퓨터에 0 ~ 65535개의 문이 있다. 문을 Port라고 부른다. 서버 어플리케이션은 특정 포트를 Listen 하고 있다.요청을 하게 되면, 웹 브라우저는 주소를 이용해 서버를 찾아가고, 서버는 포트를 이용해 응답할 어플리케이션을 ..

반응형