본문 바로가기

분류 전체보기363

[HackerRank] Forming a Magic Square 1. Problem https://www.hackerrank.com/challenges/magic-square-forming/problem 2. Feedback 3*3의 마방진은 답이 정해져있다. 정해진 답 속에서 입력받은 square 를 하나씩 비교해서 cost 를 계산한다. 제일 낮은 값이 정답이다. 3. Source public class FormingAMagicSquare { private static int answer[][] = { {2,9,4,7,5,3,6,1,8}, {4,3,8,9,5,1,2,7,6}, {4,9,2,3,5,7,8,1,6}, {8,3,4,1,5,9,6,7,2}, {8,1,6,3,5,7,4,9,2}, {2,7,6,9,5,1,4,3,8}, {6,1,8,7,5,3,2,9,4}, {.. 2018. 7. 3.
[백준] 1780번 종이의 개수 1. Feedback brute-force 로 풀음. 시간복잡도 O(n 제곱) 2. Source package acmicpc; import java.util.Scanner; /** * @author lee * *문제 : -1로만 채워진 종이 개수, 0으로만 채워진 종이 개수, +1으로만 채워진 종이 개수를 * 구한다. */ public class Num1780 { public static void main(String [] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); int board[][] = new int[N][N]; for (int i = 0 ; i board[0].length) return new int[] {0,0,0};.. 2018. 6. 26.
[HackkerRank] DP: Coin Change 1. Link to the problem https://www.hackerrank.com/challenges/ctci-coin-change/problem 2. Feedback 순서에 관계 없이 DP 를 이용하는 것이 핵심 기존 문제 푸는 방식대로 하면 cache[n] 으로 풀이가 될테지만, 이렇게 풀면 코인종류는 똑같은데 순서가 다른 것까지 포함되기에 이렇게 풀면 안됨. 중복된 것을 제거하기 위해 startIdx 를 도입하였고, 캐시를 이용하기 위해 cache[n][startIdx] 를 이용 함. 캐시를 사용함으로써 중복된 작업을 수행하지 않음. cache[n][startIdx] 의 의미는 n 에서 startIdx 로 시작할 경우, 중복된 것을 제거하고 값을 구할 수 있음. cache 가 int 값을 넘.. 2018. 6. 26.
[HackkerRank] Recursion: Davis' Staircase 1. Link to the problem https://www.hackerrank.com/challenges/ctci-recursive-staircase/problem 2. Feedback [부분집합 문제] 재귀 사용 brute-force 로 푼다면, 재귀이기 때문에 n * n-1 * n-2 … 1 로 O(n의 제곱) 이 중 중복된 작업을 제거하고자 캐시 사용 3. Source public class RecursionDavisStaircase { private static int cache[]; public static void main(String [] args) { Scanner in = new Scanner(System.in); int t = in.nextInt(); for (int testcase.. 2018. 6. 26.