본문 바로가기

Computer Science304

Problem D : 어디 있니?( where are you?) Problem D : 어디 있니?( where are you?) 제한시간: 1000 ms 메모리제한: 128 MB 1 ~ 256까지의 정수 중에서 200개를 중복되지 않게 골라내어 임의의 순서로 나열한 수열 SEQ[]가 있다. 여러분은 이 수열의 구성을 정확하게 찾아서 seq[] 배열에 담아야 하는 임무를 수행해야 한다. 사용자는 consistOf(int seq[]) 함수에서 main.cpp에 선언된 countScore(int seq[]) 함수를 이용하여 SEQ​[]배열에 대한 힌트를 얻을 수 있다. countScore(int seq[]) 함수는 배열의 구성원을 비교하여 다음과 같이 score를 구해서 돌려준다. 1. seq[] 배열과 SEQ[]배열의 같은 위치의 값이 같다면 256점을 추가한다. 2. .. 2020. 1. 28.
4 Problem C : 숫자 야구2 Problem C : 숫자 야구2 제한시간: 1000 ms 메모리제한: 128 MB Special Judge 정현이는 다음과 같이 동작하는 숫자 야구 프로그램을 만들었다. * 프로그램은 0~9까지 10개의 수를 사용하여 4자리 수의 정답을 생성한다. 0으로 시작할 수 있다. * 10개의 수는 한번씩만 사용되므로 정답에 중복된 수는 없다. * 프로그램에게 임의의 4자리 수를 물어보면 프로그램은 그 수를 정답과 비교한 결과를 알려준다. * 프로그램은 자리가 일치한 숫자는 strike, 정답에 포함되나 자리가 틀린 수를 ball로 판단하여 strike와 ball의 수를 알려준다. 따라서 정답을 맞췄을 경우 프로그램의 리턴값은 strike=4, ball=0 이다. 사용자 코드가 아래와 같이 주어질 때, 주어진 .. 2020. 1. 27.
4 Problem B : 타일 채우기 Problem B : 타일 채우기 제한시간: 1000 ms 메모리제한: 64 MB Special Judge 정사각형 모양의 화장실 바닥을 타일로 채우려고 한다. 화장실의 바닥에는 배수구가 있는데 이곳에는 타일을 놓을 수 없다. 타일의 모양은 다음과 같은 4가지 종류가 있다. 화장실 바닥의 한 변의 길이와 배수구의 위치를 입력으로 받아서 배수구를 제외한 나머지 부분에 빈 공간 없이 타일을 채우는 프로그램을 작성하시오. 첫 번째 줄에는 화장실 바닥의 한 변의 길이 N을 입력받는다. ( 2≤N≤512, N은 2의 거듭제곱 2, 4, 8, 16...) 다음 줄에는 구멍의 위치 X , Y를 입력받는다. X는 위쪽으로부터의 거리, Y는 왼쪽으로부터의 거리를 의미한다. (0≤X,Y 2020. 1. 13.
4 Problem A : 책 복사하기 Problem A : 책 복사하기 제한시간: 1000 ms 메모리제한: 32 MB 윤전기의 발명 전에는 책의 사본을 만드는 것이 무척 고통스러운 일이었다. 당시에는 책을 베껴쓰는 사람들 (서기공)이 전문으로 책을 베껴쓰곤 했다. 이 작업은 몹시 지루했는데, 작업을 일찍 끝낼 유일한 방법은 더 많은 서기공을 고용하는 것 뿐이었다. 당시 극장에서는 유명한 비극을 상연하는 중이었는데, 여러 권으로 나뉜 대본을 배우들에게 주기 위해 서기공들을 고용했다. 대본은 m권으로 나뉘어 있으며, 서기공의 수는 k이다. (k p) { end = i; cnt++; slash[i] = 1; } } for (i = 1; cnt < k && i 2020. 1. 13.
Problem D : 쌓기나무 제한시간: 2000 ms 메모리제한: 64 MB 경수네 반은 실과시간에 쌓기나무 놀이를 하였다. 맨 아랫면은 4 * 4의 모양을 모두 채워놓고 그 위에는 각 위치마다 다른 높이로 쌓아서 접착제로 붙여 놓았다. 수업시간이 끝나고 나니 각자 만들어 놓은 쌓기나무가 제각각 널부러져 있었다. 경수는 각 쌓기나무 위에 다른 쌓기나무를 엎어서 꼭 맞는 것들을 찾아서 이어서 최대한 높이 쌓아보기로 했다. 예를 들어 두 개의 쌓기나무의 위치별 높이가 아래와 같다고 하자. 오른쪽 쌓기나무를 뒤집어서 왼쪽 쌓기나무 위에 놓으면 빈틈없이 높이가 5인 직육면체가 된다. 밑면이 4 * 4인 N개의 쌓기나무가 주어질 때 위와 같이 빈틈없이 채워서 쌓을 수 있는 쌍들을 이어서 최대 높이를 구하는 프로그램을 작성하시오. 입력과 출력.. 2020. 1. 10.
못생긴 수 못생긴 수 제한시간: 1000 ms 메모리제한: 32 MB 못생긴 수란, 소인수분해 했을 경우 나오는 소인수가 2, 3 그리고 5뿐인 수를 이야기 하며, 이를 수열로 늘어놓으면 다음과 같다. 1, 2, 3, 4, 5, 6, 8, 9, 10, 12... 이는 처음나오는 10개의 못생긴 수이며, 편의상 1을 포함하도록 하자. 정수 n이 주어졌을 때, n번째 못생긴 수를 출력하는 프로그램을 작성하라. 한 줄에 양의 정수 n(n≤1,500)이 주어진다. 입력에 0 이 주어질 때까지 계속 한다. 출력에는 n번째 못생긴 수를 출력한다. 1 2 9 0 1 2 10 #include typedef long long LL; LL heap[5000] = { 0, 1 }, ugly[1600], hcnt = 1; // 1500.. 2020. 1. 9.
Problem A : 힙정렬2 (Heap_Sort) Problem A : 힙정렬2 (Heap_Sort) 제한시간: 1000 ms 메모리제한: 64 MB 정올이는 정수 배열을 입력받아 빠르게 정렬하는 임무를 부여받았다. 어떤 방법으로 정렬할까 망설이던 정올이는 배열을 max_heap구조로 만들어서 정렬하기로 했다. 그 과정은 다음과 같다. 우선 push_heap 함수를 만들어 놓고 한 개씩 입력을 받을 때마다 함수를 실행해서 계속 max_heap의 구조가 유지되도록 하면서 입력을 모두 끝낸다. 그리고 입력이 제대로 진행되었는지 확인하기 위해 모든 자료를 출력한다. 예를 들어 입력 자료가 3 6 4 8 9 7 이렇게 6개라고 하면 입력받아서 처리하는 과정은 아래와 같고 출력을 하면 9 8 7 3 6 4가 된다. 입력이 끝나면 pop_heap 함수를 만들어서 .. 2020. 1. 9.
Problem F : 합이 0이 되는 4개의 숫자들 Problem F : 합이 0이 되는 4개의 숫자들 제한시간: 3000 ms 메모리제한: 512 MB 숫자를 원소로 가지고 있는 A, B, C, D 집합이 있을 때, (a, b, c, d ) ∈ A x B x C x D 에 대해 a + b + c + d = 0인 경우의 수가 몇 가지인가 계산하는 프로그램을 작성하라. 여기서 4개의 리스트는 모두 n개의 원소를​ 가지는 집합이라고 가정한다. 입력되는 숫자의 크기는 -2​28(268,435,456)val == val) return p->cnt; // 갯수 만큼 ans에 더함 } return 0; } int main() { freopen("input.txt", "r", stdin); int i, j, tmp; long long ans = 0; scanf("%d.. 2020. 1. 8.
Problem E : 구간 성분 Problem E : 구간 성분 제한시간: 1000 ms 메모리제한: 256 MB 매 초마다 신호를 발생시키는 두 장치 A, B가 있다. 이 신호는 알파벳 소문자의 서열로 표현된다. A, B로 부터 발생한 신호를 서열로 표시한 SA, SB의 예는 다음과 같다. SA = [ a, f, c, d, r, d, e, s, d, e, f, w, s, z, r ] SB = [ g, e, d, s, r, d, d, e, m, z, r ] 신호 서열의 어떤 구간에 포함된 문자의 종류와 개수가 순서에 상관없이 동일하면 이 두 ‘구간의성분’은 같다고 한다. 아래에서 박스로 표시된 부분은 두 신호 SA, SB에서 성분이 같은 구간을 나타내고 있다. 즉 위의 예와 같이 성분이 같은 구간의 길이는 두 서열에서 반드시 같아야 한.. 2020. 1. 8.