728x90

알고리즘 246

백준] 1668 - 트로피 진열

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 트로피의 개수 N (1 ≤ N ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 왼쪽의 트로피부터 차례대로 높이가 주어진다. 출력첫째 줄에 왼쪽에서 봤을 때 보이는 개수, 둘째 줄에 오른쪽에서 봤을 때 보이는 개수를 출력한다. 소스코드 #include #include using namespace std; int main(void) { int n, arr[50]; stack sl, sr; cin >> n; for (int i = 0; i > arr[i]; sl.push(arr[0]); for (int i = 1; i sl.top()) sl.push(arr[i]); sr.push(ar..

백준] 5026 - 박사 과정(ACM-ICPC Regional)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 문제의 개수 N이 주어진다. (1 ≤ N ≤ 1000) 다음 N개 줄에는 "a+b"형식의 덧셈 문제나 "P=NP"가 주어진다. a,b ∈ [0,1000]이며 a와 b는 정수이다. 출력P=NP가 문제인 경우에는 skipped를, 덧셈 문제인 경우에는 덧셈한 결과를 출력한다. 소스코드 #include #include using namespace std; int main(void) { int n; string s; cin >> n; while (n--) { cin >> s; if (s == "P=NP") cout

백준] 11404 - 플로이드

시간 제한 : 1초메모리 제한 : 256MB 입력첫째 줄에 도시의 개수 n(1≤n≤100)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 버스의 정보는 버스의 시작 도시 a, 도착 도시 b, 한 번 타는데 필요한 비용 c로 이루어져 있다. 시작 도시와 도착 도시가 같은 경우는 없다. 비용은 100,000보다 작거나 같은 자연수이다. 출력N개의 줄을 출력해야 한다. i번째 줄에 출력하는 j번째 숫자는 도시 i에서 j로 가는데 필요한 최소 비용이다. 만약, i에서 j로 갈 수 없는 경우에는 그 자리에 0을 출력한다. 소스코드 #include #define ..

백준] 10474 - 분수 좋아해?(ACM-ICPC Regional)

시간 제한 : 2초메모리 제한 : 256MB 입력한 줄에 걸쳐 한 테스트 케이스가 입력된다. 각각의 테스트 케이스는 [1, 2^31 - 1]범위의 두 정수가 입력된다. 첫번째 정수는 분자고 두번째는 분모이다. "0 0" 입력이 들어오는 라인에서 입력을 종료한다. 출력각 테스트 케이스에 대해 한 줄에 걸쳐 주어진 입력에 맞는 대분수를 공백토큰으로 구분하여 출력하라. 소스코드 #include using namespace std; int main(void) { int x, y; while (1) { cin >> x >> y; if (x == 0 && y == 0) break; cout

백준] 10158 - 개미(KOI 2014 지역본선)

시간 제한 : 1초메모리 제한 : 256MB 입력첫줄에는 w와 h가 공백을 사이에 두고 주어진다. 그 다음 줄에는 초기 위치의 좌표값 p와 q가 공백을 사이에 두고 주어진다. 3번째 줄에는 개미가 움직일 시간 t가 주어진다. 출력출력은 t 시간 후에 개미의 위치 좌표 (x,y)의 값 x와 y를 공백을 사이에 두고 출력한다. 소스코드 #include using namespace std; int main(void) { int w, h, curx, cury, dx, dy, t; cin >> w >> h >> curx >> cury >> t; dx = dy = 1; for (int i = 0; i w || curx + dx < 0) dx = -dx; if (cu..

백준] 2631 - 줄세우기(KOI 2001)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에는 아이들의 수 N이 주어진다. 둘째 줄부터는 1부터 N까지의 숫자가 한 줄에 하나씩 주어진다. N은 2 이상 200 이하의 정수이다. 출력첫째 줄에는 번호 순서대로 줄을 세우는데 옮겨지는 아이들의 최소 수를 출력한다. 소스코드 #include using namespace std; int main(void) { int n, max, arr[201] = { 0, }, dp[201] = { 0, }; cin >> n; for (int i = 1; i > arr[i]; for (int i = 1; i

백준] 8979 - 올림픽(KOI 2013)

시간 제한 : 1초메모리 제한 : 128MB 입력입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각 국가를 나타내는 정수와 이 국가가 얻은 금, 은, 동메달의 수가 빈칸을 사이에 두고 주어진다. 전체 메달 수의 총합은 1,000,000 이하이다. 출력출력은 단 한 줄이며, 입력받은 국가 K의 등수를 하나의 정수로 출력한다. 등수는 반드시 문제에서 정의된 방식을 따라야 한다. 소스코드 #include #include using namespace std; struct nation { int id, gold, silver, bronze, ran..

728x90