출저 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15PTkqAPYCFAYD"트리 구현" 트리를 구현하면된다. Complete Binary Tree 였다면 모두 배열에 넣고 좀더 쉽게 구할수 있었겠지만, 그냥 이진트리여서 그러지 못하고 트리를 구현했다. 대신 부모로 가는 경로를 쉽게 구하고자 해당 노드의 left, right 이외에 parent 변수도 함께 넣어줬다. 그렇게 한 후, A와 B의 공통 조상을 구하기 위해 A와 B의 조상을 번갈아가면서 찾으며 마킹을 했다. 이미 누군가가 지나간 노드의 경우 공통 조상이 되므로, 그 공통 조상을 구했고, 그 하위부터 다시 재귀적으로 공통 조상의 자식들을 l,r ..
출저 : https://www.acmicpc.net/problem/15685 "아이디어가 필요한 구현문제" 삼성 기출 문제. 각 세대를 더해 갈 수록 기존에 찍었던 선들을 모두 왼쪽으로 돌려서 다시 그려준다. 초기에 생각만 잘하면 쉽게 풀릴 문제 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Lis..
출저 : https://www.acmicpc.net/problem/3019 "아구가 맞니?" 해당 문제를 처음에는 모든 조각의 상대 위치를 3?4? 차원 배열로 만들어서 모든 경우에 수에 따라 검색하려고 했다. 하지만 조각의 위치를 정의하는데 너무 복잡하고 더러워서 다른 방법을 찾아봄... 아구가 맞는지를 탐색하는 방법이다. 아래와 같이 돌출된 부분에 값을 준다. 전체 높이가 같은지 확인한다.아래 왼쪽 그림의 경우 높이는 2,1 이고 ㅓ 의 경우 돌출된 칸이 1칸 이므로 0,1 이렇게 한 후 높이와 이 값을 더한다. 왼쪽) 2 + 0 = 1+ 1오른쪽 ) 2+ 0 = 1 + 1 = 2 + 0 123456789101112131415161718192021222324252627282930313233343536..
출저 : https://www.acmicpc.net/problem/3076 "구현" 더 좋은 게 있을듯...; 123456789101112131415161718192021222324252627282930313233343536373839import java.util.Scanner; class Main { static int R,C,A,B; static char[][] map; static StringBuilder sb = new StringBuilder(); public static void main (String[] args) { Scanner sc = new Scanner(System.in); R = sc.nextInt(); C = sc.nextInt(); A = sc.nextInt(); B = sc...
출저 : https://www.acmicpc.net/problem/2804 "구현" 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer; class Main { static char[] A,B; static int N,M; static char[][] map; static int I,J; static StringBuilder sb = n..
출저 : https://www.acmicpc.net/problem/2501 "구현" 1234567891011121314151617181920212223import java.util.Scanner; public class Main { static int N,K; static Scanner sc = new Scanner(System.in); public static void main(String[] args) { N = sc.nextInt(); K = sc.nextInt(); for (int i = 1; i
출저 : https://www.acmicpc.net/problem/2839 "BFS를 이용한 탐색" 12345678910111213141516171819202122232425262728293031323334353637383940414243444546import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner; public class Main { static int N; static int min = -1; static int[] visited; static int[] weight = {3,5}; static boolean ok; static Queue q = new LinkedList()..
출저 : https://www.acmicpc.net/problem/11559 "BFS를 활용한 구현" 먼저 뿌요뿌요의 실행 순서를 보자. 1. 중력에 의해 모든 뿌요들이 밑으로 떨어진다. 2. 상하좌우로 4개 이상 인접한 같은 색깔의 뿌요들은 모두 동시에 터진다. 간단히 두개의 과정으로 나타낼 수 있다. 이를 구현해주면 끝. 먼저 뿌요들을 밑으로 내리는 코드를 보면 아래와 같다. 12345678910111213141516for (int i = 11; i >=0 ; i--) { for (int j = 0; j
- Total
- Today
- Yesterday