목록Algorithm (62)
DY N DY
LCS 성공문제집 시간 제한메모리 제한제출정답맞은 사람정답 비율1 초128 MB208493266142.728%문제LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.입력첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.출력첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.예제 입력 복사ACAYKP CAPCAK 예제 출력 복사4 힌트출처문제를 만든 사람: baekjoon 123456789101112131415161718192021222..
JAVA, C, C++ 공통 대단한 알고리즘 노하우나 팁은 아니지만 실수를 방지할 수 있고 약간의 팁이라고 할 수 있어서 하나씩 정리.. 보통 알고리즘 문제에서는 배열을 사용하기 마련이다. 알고리즘 문제를 풀 때 만약 입력값이 2000개 들어온다고 하면 int a[2000] 이런식으로 잡는데 사실 문제는 없지만 보통은 1부터 2000까지가 0부터 1999까지보다 편하게 느껴질 것이다. 때문에 보통은 2000개 들어온다고 한다면 int a[2001] 이런식으로 잡거나 사실 메모리 조금 더 쓰는것이 문제가 틀리는 것 보다 낫다고 생각하기 때문에 보통 int a[2222] 등 넉넉하게 잡는다. 이렇게 잡으면 for loop를 돌 때기존에 for(int i = 0; i < 2000; ++i) 등으로 사용하던 것..
1124 : 색종이(고)제한시간: 1000 ms 메모리제한: 32 MB 해결횟수: 390 회 시도횟수: 1418 회 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 도화지에서 검은색 직사각형을 잘라내려고 한다. 직사각형 또한 그 변이 도화지의 변과 평행하도록 잘라내어야 한다. 예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 과 같은 모양으로 붙였다. 에 표시된 대로 검은색 직사각형을 잘라내면 그 넓이는 22×5=110이 된다. 반면 에 표시된 대로 검은색 직사각형을 잘라내면 그 넓이는 8×1..
2101 : 연속부분최대곱제한시간: 1000 ms 메모리제한: 32 MB 해결횟수: 740 회 시도횟수: 2489 회 N개의 양의 실수가 있을 때, 한 개 이상의 연속된 수들의 곱이 최대가 되는 부분을 찾아, 그 곱을 출력하는 프로그램을 작성하시오. 예를 들어 아래와 같이 8개의 양의 실수가 주어진다면, 색칠된 부분의 곱이 최대가 되며, 그 값은 1.638이다.결과는 double형의 범위를 넘지 않는다. 첫째 줄은 나열된 양의 실수들의 개수 N이 주어지고, 그 다음 줄부터 N개의 수가 한 줄에 하나씩 들어 있다. N은 10,000 이하의 자연수이다. 계산된 최대값을 소수점 이하 넷째 자리에서 반올림하여 소수점 이하 셋째 자리까지 출력한다. [Copy] 8 1.1 0.7 1.3 0.9 1.4 0.8 0.7..
시간 제한메모리 제한제출 횟수정답 횟수 (비율)정답자 수1.5 초512 MB107364 (6%)38문제납세의 의무는 국민의 기본적인 의무이다. 세금은 수입에 비례하여 정해진 규칙에 따라 계산되기 때문에, 규칙에 따라서 정확한 수입을 계산하는 것이 중요하다. 여러분은 새로 가게를 열고, 총 N 일 동안 영업을 하였다. 납세의 의무를 성실하게 수행하기 위하여 매 영업일마다 손익(이익 또는 손해)을 기록하여 세무서에 신고하였다. 세금을 매기는데 기준이 되는 수입은 다음 규칙에 의해서 계산된다."1일부터 N일 사이의 어떤 연속된 기간에 대하여 이 기간 동안 손익의 총합을 구한다. 단, 하루 이상의 기간만 고려한다. 다음, 전체 가능한 모든 기간에 대하여 구한 손익의 총합들 중 K번째로 큰 값이 기준이 된다. 즉..
1161 : 하노이의 탑제한시간: 1000 ms 메모리제한: 32 MB 해결횟수: 874 회 시도횟수: 1329 회 하노이의 탑에 대한 전설은 아래와 같다. 인도 베나레스에 있는 한 사원에는 세상의 중심을 나타내는 큰 돔이 있고 그 안에 세 개의 다이아몬드 기둥이 동판 위에 세워져 있다. 기둥 가운데 하나에는 신이 64개의 순금 원판을 끼워 놓았다. 가장 큰 원판이 바닥에 놓여 있고, 나머지 원판들이 점점 작아지며 꼭대기까지 쌓여 있다. 이것은 신성한 브라흐마의 탑이다. 브라흐마의 지시에 따라 승려들은 모든 원판을 다른 기둥으로 옮기기 위해 밤낮 없이 차례로 제단에 올라 규칙에 따라 원판을 하나씩 옮긴다. 이 일이 끝날 때, 탑은 무너지고 세상은 종말을 맞이하게 된다. 기둥을 1, 2, 3 번으로 하고,..
시간 제한메모리 제한제출 횟수정답 횟수 (비율)정답자 수3.0 초512 MB23940 (17%)26문제N개의 정점과 M개의 간선으로 이루어진 양방향 그래프가 주어진다. 1번 정점에서 N번 정점까지의 K번째 최단경로를 구하여라. 같은 거리로 N번 정점에 도달해도 중간에 이동하는 방법이 다르면 서로 다른 경로로 간주하며 같은 간선을 여러 번 이용할 수도 있다. 만약 1번 정점에서 N번 정점까지의 경로가 존재하지 않으면 -1을 출력한다.입력첫 번째 줄에 정점의 개수 N과 간선의 개수 M, 그리고 K가 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ M ≤ 500,000, 1 ≤ K ≤ 10)두 번째 줄부터 M개의 줄에 걸쳐 간선의 정보가 입력된다. 간선의 정보는 x, y, z꼴로 주어지며 x에서 y로 가는데..
1112 : 줄자접기제한시간: 1000 ms 메모리제한: 64 MB 해결횟수: 429 회 시도횟수: 1209 회 준성이는 1㎝ 간격으로 눈금이 매겨져 있는 줄자를 가지고 있다. 그 줄자에 있는 서로 다른 눈금 6개에 한 눈금에 하나씩 점이 찍혀 있는데, 빨간 점, 파란 점, 노란 점이 각각 두 개씩 있다. 준성이는 먼저 빨간 점이 만나도록 줄자를 접었다. 그런 후 두 파란 점이 만나도록 줄자를 접고, 또 다시 두 노란 점이 만나도록 줄자를 접었다. 줄자는 투명하여 접더라도 점들을 잘 볼 수 있다. 어떤 색깔의 두 점이 만나도록 줄자를 접었을 때, 그 다음에 접으려는 색깔의 두 점이 이미 만나고 있으면, 그 두 점에 대해서는 줄자를 접지 않는다. 예를 들어 길이 10㎝ 인 줄자에 아래 그림과 같이 2㎝ 와..