목록Java (152)
Lewis's Tech Keep
자바 다익스트라 - 한 점에서 다른 점까지의 간선 중에 최소값을 찾아나감 - bfs 이용 더보기 import java.io.*; import java.util.*; class Edge{ int vertex; int weight; public Edge(int vertex, int weight) { this.vertex = vertex; this.weight = weight; } } public class Solution { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new S..
참고 : www.acmicpc.net/problem/2133 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net - dp 문제 - 3xn 타일링 문제 - dp[i] =3 *dp[i-2] (i-2번째에서 가능한 모형 3가지 경우) + 2 *dp[i-4]~ dp[0] 까지 ( 각 단계에서 생기는 특수한 경우 2가지) 더보기 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] dp = new int[31]; dp..
참고 : www.acmicpc.net/problem/11727 - dp 문제 - dp[i] : 2xi 일때 i에 가능한 타일의 수 = dp[i-1] (i-1번째 + 새로 타일 한 줄 ) + 2*dp[i-2] (i-2번째 + 가로 타일 + 정사각형) 더보기 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] dp = new int[n+2]; dp[0] = 0; dp[1] = 1; dp[2] = 3; for (int i = 3; i
참고 : www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net - 시뮬레이션 - 구현 중점 - 1. 한쪽으로 이동 시킨다 (moveBlock) - 2. 회전 시킨다 (좌 하 우 상 ) - 3. 5번 진행 시킨다. 더보기 코드 예제 import java.util.*; public class Solution { static int n; static int[][] board1 = new int[22][22]; static int[][] bo..
- 시뮬레이션 문제 - 실패 - 로직은 떠오르는데 구현이 잘 안된다. 블럭을 한 쪽으로 밀어내는 로직이 잘 안 짜여지는 중 더보기 import java.util.*; public class Solution { static int n; static int[][] board = new int[22][22]; static int[][] block = new int[22][22]; private static void move(int dirNum, int[][] block) { for (int i = 0; i < 5; i++) { int dir = dirNum % 4; dirNum /= 4; // System.out.println(dir); for (int j = 0; j < n; j++) { for (int k..
참고 : www.acmicpc.net/problem/18808 - 시뮬레이션 문제 - 어려워서 풀이를 참고함. - 각 기능을 원하는 대로 구현하는 능력을 키워야 함. 더보기 import java.util.*; public class Main { static int n, m, k; static int[][] paper = new int[12][12]; static int r, c; static int[][] note = new int[42][42]; private static void swapRC() { int t = r; r = c; c = t; } private static void rotate() { int[][] tmp = new int[12][12]; for (int i = 0; i < r; i+..
참고 : www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net - 시뮬레이션 문제 - 90도씩 돌아가면서 보이는 곳에 마킹을 해줌 - 마킹 안 되어 있는 곳 (cctv, 벽 제외) 의 최소값을 구해줌. 더보기 import java.util.*; class CCTV { int x; int y; public CCTV(int x, int y) { this.x = x; this.y = y; } } public class Solution { private sta..
참고 : www.acmicpc.net/problem/2294 - dp 문제 - dp[i] : i 에 도달하는데 최소 갯수 (ex. dp[1] : 1에 도달하는데 최소 갯수 1이 있을 시 1로 최소) 더보기 import java.util.Scanner; public class Solution { public static void main(String[] args) { final int MAX_VAL = 100001; Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int[] coin = new int[n+1]; for(int i=1; i