목록분류 전체보기 (4)
코딩하고 싶을 땐, 타자를 두드리자

- 문제 소개 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 해당 문제는 백트래킹을 이용해 풀 수 있는 문제 중 하나이다.해당 답안은 n = 4일때, 나올 수 있는 답안 중 하나이다. - 해결책 최적화에 대한 고민이 문제는 너무나 유명한 백트래킹 문제라 바로 백트래킹을 적용해보았다.public class baek9663 { static int N; static long total = 0; public static void main(String[] args) throws IOException { BufferedReader br = new Buffere..

팀프로젝트에서 FCM을 사용하기까지의 과정안드로이드 앱을 위한 팀프로젝트를 진행하면서, 하나의 문제에 부딪치게 되었다. 바로 어떤 기능이 해당 문제의 시작이었다.우리가 만들려는 앱은 시간 약속을 잘 지키기 위해 도와주는 앱이다. 해당 앱에선 공유 일정이라는 기능이 있고, 이 공유 일정을 공유하는 팀원에게 푸시 메시지를 보낼 수 있는 기능을 포함하고 있다!해당 알림을 백에서 보내기 위한 여러 기술들이 있었으나, 그중 FCM을 채택하게 되었다. FCM을 채택한 사유로는 무료로 서비스를 이용할 수 있고, 공식 문서가 잘되어있어 러닝커브가 낮은 편에 속하기에 단기 팀프로젝트에 적합한 서비스였기 때문이다. 이제부터, 나의 경험을 바탕으로 FCM 구현과정을 설명할 예정이다! 본문의 글은 저의 경험을 기술한 내용이므..

- 문제 소개 문제 자세히 보기 (하단의 더 보기 클릭)더보기n(1≤n≤1,000) 개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 m(1≤m≤100,000) 개의 버스가 있다. 우리는 A번째 도시에서 B번째 도시까지 가는데 드는 버스 비용을 최소화시키려고 한다. 그러면 A번째 도시에서 B번째 도시까지 가는데 드는 최소비용과 경로를 출력하여라. 항상 시작점에서 도착점으로의 경로가 존재한다.입력첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 그리고 그 다음에는 도착지의 도시 번호가 주어지고..

- 문제 소개 해당 문제를 읽으면서, 과거에 풀었던 문제가 떠올랐다. 바로 가장 긴 증가하는 부분 수열과 관련된 문제이다.그 문제의 응용 버전으로 생각하면 문제의 접근이 수월해진다!- 문제의 접근1. 해당 문제의 시간제한은 1초, 즉 대략 1억 번의 연산이 가능하다. 2. 모든 경우의 수를 따지는 브루트포스는 옳지 않다. 경우의 수가 지수함수인 2^N개 이기 때문에 무조건 1억번을 넘는다. 3. 입력 값의 사이즈를 보면 N = 1,000으로 O(N^2)이하의 시간 복잡도를 가진 알고리즘이라면 해당 문제의 풀이가 가능하다. 4. 해당 문제는 최적 부분 구조와 중복 부분 문제의 조건을 충족하고 있다. -> DP 알고리즘으로 문제 풀이가 가능하다.what? : 최적 부분 구조와 중복 부분 문제? -> 이후 글..