본문 바로가기

반응형

ProgramSoliving

(197)
백준 : 2262 그리디로도 풀 수 있다는데 dp로 풀었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { static int N; static int dp[][]; static int..
백준 : 4354 java https://www.acmicpc.net/problem/4354 4354번: 문자열 제곱 문제 알파벳 소문자로 이루어진 두 문자열 a와 b가 주어졌을 때, a*b는 두 문자열을 이어붙이는 것을 뜻한다. 예를 들어, a="abc", b="def"일 때, a*b="abcdef"이다. 이러한 이어 붙이는 것을 곱셈으로 생각한다면, 음이 아닌 정수의 제곱도 정의할 수 있다. a^0 = "" (빈 문자열) a^(n+1) = a*(a^n) 문자열 s가 주어졌을 때, 어떤 문자열 a에 대해서 s=a^n을 만족하는 가장 큰 n을 찾는 프로그램을 작성하시오. www.acmicpc.net KMP 알고리즘의 Pi값을 이용해서 문제를 풀수 있었다. ababab 문자열의 Pi값을 구해보면 = [0, 0, 1, 2, 3, 4]..
백준 : 17387 https://www.acmicpc.net/problem/17387 17387번: 선분 교차 2 첫째 줄에 L1의 양 끝 점 x1, y1, x2, y2가, 둘째 줄에 L2의 양 끝 점 x3, y3, x4, y4가 주어진다. www.acmicpc.net ccw을 이용한 문제 평행하는 순간에 예외처리를 해주면된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 7..
백준 : 3025 java (돌 던지기) https://www.acmicpc.net/problem/3025 3025번: 돌 던지기 문제 이 모든 사건의 시작은 2주 전이었다. 그 날 상근이는 복도에 누워서 잠을 자고 있었다. 커다란 돌을 들고 그 옆을 지나가던 민혁이는 복도에서 잠을 자는 사람을 처음봐서 신기하게 쳐다보고 있었다. 그 때였다. 들고 있던 돌을 상근이의 왼 발에 떨어뜨렸다. 상근이는 응급실로 실려갔고, 한 달 동안 침대에 누워서 휴식을 취해야 한다는 진단을 받았다. 민혁이는 미안한 마음에 하던 일을 모두 중단하고 상근이를 간호하기로 했다. 상근이는 2주 동안 온라인 저 www.acmicpc.net 시뮬레이션 문제 하지만 매 쿼리마다 시작지점에서 도착지점을 찾는다면 for문이 3만번 매번돌아서 시간초과를 발생한다. 따라서 현재 쿼리..
백준 : 2116 자바 https://www.acmicpc.net/problem/2166 2166번: 다각형의 면적 첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다. www.acmicpc.net ccw 세점의 외적을 이용하여 삼각형의 넓이를 구할 수 있다. 주어진 다각형의 좌표들은 순서대로 주어지기때문에 ccw의 값자체의 /2 한값이 삼각형이란걸 알수있다. 다각형을 삼각형으로 나누엇을때 값을 구할수 있다. 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41..
백준 : 2113 java 트리의 독립집합 문제는 메모이제이션을 이용해서 풀었다. 기본적으로 1번노드에서 시작해 그래프를 탐색하는데 현재 노드를 선택/비선택 두가지 가지로 나누어서 메오이제이션을 채울 수있다. 그리고 이번 노드에서 선택했다면 인접한 노드는 선택하면 안되고 만약 선택하지 않았다면 선택해도 되고 안해도 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 8..
백준 16933: java https://www.acmicpc.net/problem/16933 16933번: 벽 부수고 이동하기 3 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net 벽 부수고 이동하기 3 아이디어 BFS 너비우선 탐색을 활용한다. 이때 현재위치, 내가 뿌순 벽수, 낮과밤 을 이용해서 풀수있다. 낮과밤은 홀수짝수 개념으로 0 : 낮 1 : 밤으로 하고 1을 더하고 %2 한것은 항상 0과 1를 이용해서 풀수있다. visit 배열말 잘선언해주고 조건에 맞게 BFS 탐새을 이용하면 쉽게 풀수있다. BFS 탐색시 q.size 만큼 ..
백준 : 7682 https://www.acmicpc.net/problem/7682 7682번: 틱택토 문제 틱택토 게임은 두 명의 사람이 번갈아가며 말을 놓는 게임이다. 게임판은 3×3 격자판이며, 처음에는 비어 있다. 두 사람은 각각 X 또는 O 말을 번갈아가며 놓는데, 반드시 첫 번째 사람이 X를 놓고 두 번째 사람이 O를 놓는다. 어느 때든지 한 사람의 말이 가로, 세로, 대각선 방향으로 3칸을 잇는 데 성공하면 게임은 즉시 끝난다. 게임판이 가득 차도 게임은 끝난다. 게임판의 상태가 주어지면, 그 상태가 틱택토 게임에서 발생할 수 있는 최종 상태인 www.acmicpc.net 하나의 쿼리를 할때마다 유효성을 판단하는것은 메모리초과 or 시간 초과를 야기시킨다. 쿼리를 진행하기전에 모든 경우의수를 조사하다. 실제로..

반응형