-
백준 9466번 텀 프로젝트 :: 마이구미알고리즘 풀이/그래프 2017. 1. 22. 17:31
이번 글은 백준 9466번 문제 "텀 프로젝트" 를 다뤄본다.백준 알고리즘 문제 9466번 텀 프로젝트 https://www.acmicpc.net/problem/9466DFS, BFS 관련 글.http://mygumi.tistory.com/102 예를 들어, 한 반에 7명의 학생이 있다고 하자. 학생들을 1번부터 7번으로 표현할 때, 선택의 결과는 다음과 같다.12345673137346위의 결과를 통해 (3)과 (4, 7, 6)이 팀을 이룰 수 있다. 1, 2, 5는 어느 팀에도 속하지 않는다.주어진 선택의 결과를 보고 어느 프로젝트 팀에도 속하지 않는 학생들의 수를 계산하는 프로그램을 작성하라. 문제를 보면 10451번과 흡사하다.이 문제도 사이클을 찾으면 된다.10451번과 다른 점은 중복 입력이 주..
-
백준 10451번 순열 사이클 :: 마이구미알고리즘 풀이/그래프 2017. 1. 22. 15:28
이번 글은 백준 알고리즘 10451번 "순열 사이클" 을 다뤄본다.백준 알고리즘 10451번 순열 사이클 문제https://www.acmicpc.net/problem/10451DFS, BFS 관련 글.http://mygumi.tistory.com/102 위 그림처럼 사이클 개수를 찾는 문제이다. (방향이 존재함으로 방향 그래프)정점들이 연결되어 하나의 그래프를 이루는 것을 그래프의 연결 요소라고도 말한다.즉, 연결 요소의 개수가 순열 사이클의 개수와 같은 의미이므로, 연결 요소를 구하면 되는 문제이다. 이 문제의 이름이 보면, 순열 그래프이다.순열의 정의 상 숫자는 중복으로 입력되지 않는다고 한다.그렇다는 건, 그래프가 한개 이상이 존재하지만, 주어지는 그래프는 모든 정점에 연결된 사이클이 있는 그래프라..
-
라우팅 모듈화를 통한 MVC 패턴 ::마이구미Nodejs 2017. 1. 21. 17:08
이번 글은 MVC 패턴에 대해 다뤄본다.MVC 패턴을 라우팅 모듈화를 통해 더 견고하게 만들어보자. MVC란 무엇인가? 위키의 정의를 보자.모델-뷰-컨트롤러(Model–View–Controller, MVC)는 소프트웨어 공학에서 사용되는 아키텍처 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다이해하기 쉽게 설명하자면, M - 데이터베이스, ..
-
백준 11403번 경로 찾기 :: 마이구미알고리즘 풀이/그래프 2017. 1. 20. 23:42
이번 글은 백준 알고리즘 문제 11403번 "경로 찾기" 를 다뤄본다.이 문제는 그래프의 DFS, BFS 를 활용하는 문제이다.DFS, BFS - http://mygumi.tistory.com/102백준 알고리즘 문제 11403번 경로 찾기 - https://www.acmicpc.net/problem/11403 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. 친절하게 문제에서 어떤 그래프인지 말해주고 있다.가중치가 없는 방향 그래프라고 명시되어 있다.그래프에 대한 글에서 무방향 그래프를 기준으로 다뤘었다.차이는 단지 방향이 있고 없고 차이뿐이다. // 무방향 그래프 인접행렬a[v1][v2] = 1;a[v2..
-
git rm --cached 파일 삭제 :: 마이구미GitHub 2017. 1. 20. 20:59
이번 글은 Github 저장소에 있는 파일을 삭제하는 법을 다뤄본다.이게 무슨 말인가? 예를 들어보겠다. 상황을 들어보자.작업이 완료되어 저장소에 push를 날렸다.하지만 모르고 작업에 필요했지만 올리지 않아도 되는 private이라는 폴더를 올려버렸다.그래서 폴더를 삭제하고, 다시 push를 날렸다.하지만 Github에서는 삭제되지 않았다. 폴더를 리팩토링하고 난 후에도 마찬가지이다.삭제 및 이동을 하고 push를 할 시 Github에 있는 폴더는 유지된 채 바뀐 폴더가 새로 생성된다. 원격 저장소에 이미 파일은 저장되어있다.로컬에서 삭제만 한다고 해서 원격 저장소에서 삭제가 이루어지지 않는다.이 경우 git 명령어를 통한 파일 삭제 후 push를 해줘야한다. $ git rm $ git rm --cac..
-
[그래프] DFS와 BFS 구현하기 :: 마이구미알고리즘 2017. 1. 19. 22:15
이번 글은 자료구조 중 그래프를 다뤄본다.백준 알고리즘 1260번을 통해 진행하니 참고하길바란다. 그래프는 정점과 간선으로 이루어진 자료구조의 일종이다. G = (V, E) 그림을 보다시피, 정점과 간선이 무엇을 나타내는 지 알 수 있다.정점은 각 출발점 도착점과 같은 점이라고 보면 되고, 간선은 그 정점간 연결된 관계를 뜻한다. 무방향 그래프와 방향 그래프가 있다.말그대로 방향이 있는 그래프는 2->1로만 갈 수 있고, 무방향이라면 2->1, 1->2 가능하다는 것이다.여기서는 무방향 그래프를 기준으로 다뤄볼 것이다. 그래프의 탐색에 있어 DFS, BFS 방식이 있다.깊이 우선 탐색(DFS), 너비 우선 탐색(BFS) 2가지 방식을 알아보자.두 탐색은 모든 정점을 한번만 방문한다는 같은 목표를 가지고 ..
-
백준 2493번 탑 [Stack] :: 마이구미알고리즘 풀이/스택, 큐 2017. 1. 18. 23:48
이번 글은 백준 알고리즘 2493번 문제 "탑" 을 다뤄본다.스택을 응용한 문제이다.백준 2493번 탑 문제 - https://www.acmicpc.net/problem/2493 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 개의 탑이 수평 직선에 일렬로 서 있고, 모든 탑에서는 주어진 탑 순서의 반대 방향(왼쪽 방향)으로 동시에 레이저 신호를 발사한다고 하자. 그러면, 높이가 4인 다섯 번째 탑에서 발사한 레이저 신호는 높이가 7인 네 번째 탑이 수신을 하고, 높이가 7인 네 번째 탑의 신호는 높이가 9인 두 번째 탑이, 높이가 5인 세 번째 탑의 신호도 높이가 9인 두 번째 탑이 수신을 한다. 높이가 9인 두 번째 탑과 높이가 6인 첫 번째 탑이 보낸 레이저 신호는 어떤 탑에서도 수신을 하지 못한..
-
백준 2579번 계단 오르기 [DP] :: 마이구미알고리즘 풀이/동적계획법 2017. 1. 16. 22:58
이번 글은 백준 알고리즘 2579번 "계단 오르기" 문제를 다뤄본다.일단 문제를 보자. 이 문제는 동적계획법으로 접근하는 문제이다.문제에서 친절하게 규칙 3가지를 알려주었다.먼저 3번 규칙을 보면, 마지막 계단은 무조건 밟는다는 것이 규칙이다. 그렇다면, 마지막 계단을 밟았을 경우, 이전의 경우를 2가지로 생각할 수 있다.1. 마지막 계단 전의 계단을 밟은 경우.2. 마지막 계단 전의 계단을 밟지 않은 경우. 1번의 경우에는 마지막 계단 전의 계단을 밟았음으로, 마지막 계단 전전의 계단은 밟지 못한다.2번의 경우에는 마지막 계단 전의 계단을 밟지 않았음으로, 마지막 계단 전전의 계단을 밟고 왔다. 위 경우를 통해 점화식을 도출해보자. 1. dp[n] = dp[n-3] + array[n-1] + array..