본문 바로가기

알고리즘 문제풀이

(39)
[알고리즘] 백준 11399번 "ATM" (C/C++) - Don 임베디드 문제요약: 한 대의 ATM을 N명의 사람이 순서대로 사용하려고 한다. 사람은 1번부터 N번까지 번호가 매겨져 있고, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄서는 순서에 따라서, 모든 사람이 돈을 인출하는 데 필요한 시간의 합이 달라지게 된다. 예를 들어, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [P1 P2 P3 P4 P5] 순서로 줄을 선다면, P1은 3(3)분, P2는 4(3+1)분, P3는 8(3+1+4)분, P4는 11(3+1+4+3)분, P5는 13(3+1+4+3+2)분이 걸린다. 이렇게 모든 사람이 돈을 인출하는 데 필요한 시간의 합은 39분이 된다. 반면에 [P2 P5 P1 P4 P3] 순서로 줄을 서게 되면, P..
[알고리즘] 백준 10870번 "피보나치 수 5" (C/C++) - Don 임베디드 문제요약: 피보나치 수는 0, 1로 시작한다. 0번째 피보나치 수는 0, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 식으로는, F(n) = F(n-1) + F(n-2), (n >= 2) 가 된다. n=17일 때까지 피보나치 수는 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하라. *반드시 재귀함수를 사용해보자. 제약: 시간 제한 1초, 메모리 256MB 0
[알고리즘] 백준 11650번 "좌표 정렬하기" (C/C++) - Don 임베디드 문제 요약: 2차원 평면 위에 점 N개의 좌표가 주어진다. N개의 좌표들을 X 좌표가 증가하는 순으로, X 좌표가 같으면 Y 좌표가 증가하는 순으로 정렬한 뒤 출력하는 프로그램을 작성하라. 첫 줄에는 입력될 좌표의 개수 N이 주어진다. 둘째줄 부터 N개의 줄에는 i번 점 (Xi, Yi)가 주어진다. 좌표는 항상 정수이고, 위치가 완전히 동일한 좌표는 주어지지 않는다. 제약: 제한시간 1초, 메모리 제한 256MB 1
[알고리즘] 백준 2750번 "수 정렬하기" (C/C++) - Don 임베디드 문제 요약: N개의 수 A(0), A(1), A(2), ... , A(i), ... A(N-1) 가 주어졌을 때, 오름차순으로 정렬하는 프로그램을 작성하라. 제약: 시간 1초, 메모리 128MB 1= 0; j--) { cout
[알고리즘] 백준 1931번 "회의실 배정" (C/C++) - Don 임베디드 문제 요약: 한개의 회의식이 있는데, 이를 사용하려고 하는 회의 N개에 대하여 회의실 사용표를 만드는 프로그램이 필요하다. 각 회의는 시작 시간, 끝나는 시간 정보가 주어진다. 이때, 회의 시간이 겹치지 않게 하면서 최대 몇 개의 회의를 할 수 있는지 구해보자. 단, 회의는 시작하면 중간에 중단할 수 없으며, 하나의 회의가 끝나는 동시에 다음 회의가 시작할 수 있다. 하나의 회의의 시작시간과 끝나는 시간이 같을 수 있다. 이 경우는 시작하자마자 끝나는 것으로 생각한다. 제약: 1 N; for(int i = 0; i > nStartTime >> nEndTime; v.push_back(Meeting(nStartTime, nEndTime)); } // custom 비교함수 _Compare를 사용하여 회의 목록..
[알고리즘] 백준 10872번 "팩토리얼" (C/C++) - Don 임베디드 문제 요약: 정수 N이 주어졌을때, N!을 구해서 출력하라. (반드시 재귀 함수를 이용할 것.) 제약: 제한 시간 1초, 메모리 256MB 0 N; // 재귀함수로 팩토리얼 값을 계산. nResult = factorial(N); cout
[알고리즘] 백준 1085번 "직사각형에서 탈출" (C/C++) - Don 임베디드 문제 요약: 왼쪽 아래 꼭지점 (0, 0) 오른쪽 위 꼭지점 (w, h) 직사각형의 방 안에 재석이형이 있다. 재석이형의 위치가 (x ,y)일 때, 직사각형의 경계선까지 가는 거리의 최소값을 구하는 프로그램을 작성하시오. 입력으로 x, y, w, h가 순서대로 주어진다. 제약: 제한 시간 2초, 메모리 128MB 1 w >> h; // (h - y), (w - x) 중 최소값 선택. nTmp[0] = (((h - y)
[알고리즘] 백준 11653번 "소인수분해" (C/C++) - Don 임베디드 문제요약: 자연수 N이 주어졌을 때, 소인수 분해 한 소수들을 오름차순으로 나열하라. 제약: 제한시간 1초, 메모리 256MB, 1 N; // 입력값에 따라 소인수 분해 결과를 출력. _PrintPrimes(N); return 0; } void _SetPrime(int nSize) { // Init bIsPrime Values bIsPrime[1] = false; for (int i = 2; i