728x90

ACM-ICPC 40

백준] 10451 - 순열 사이클(ACM-ICPC Regionals Daejeon)

시간 제한 : 1초메모리 제한 : 256MB 입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 순열의 크기 N (2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 순열이 주어지며, 각 정수는 공백으로 구분되어 있다. 출력각 테스트 케이스마다, 입력으로 주어진 순열에 존재하는 순열 사이클의 개수를 출력한다. 소스코드#include #include using namespace std; vector arr; vector check; void sequence(int idx) { if (check[idx] == false) { check[idx] = true; sequence(arr[idx]); } else return; } int main(void) { int T; cin >..

백준] 9469 - 폰 노이만(ACM-ICPC Regionals)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 테스트 케이스의 개수 P (1 ≤ P ≤ 1000)가 주어진다.각 테스트 케이스는 다섯 숫자 N, D, A, B, F이루어져 있다. N은 테스트 케이스의 번호이고, D는 철로의 길이 (10 ≤ D ≤ 1000), A와 B는 두 기차의 속도 (1 ≤ A, B ≤ 30), F는 파리의 속도 (A ≤ B < F ≤ 50)이다. D, A, B, F는 실수이다. 실수는 최대 소수점 둘째자리까지 주어진다. 출력각 테스트 케이스마다 테스트 케이스 번호를 출력하고, 두 기차가 충돌할 때까지 파리가 움직인 거리를 출력한다. 절대/상대 오차는 10^-2까지 허용한다. 소스코드#include using namespace std; int main(void) { int..

백준] 3486 - Adding Reversed Numbers(ACM-ICPC Regionals)

시간 제한 : 1초메모리 제한 : 128MB 입력The input consists of N cases. The first line of the input contains only positive integer N. Then follow the cases. Each case consists of exactly one line with two positive integers separated by space. These are the reversed numbers you are to add. Two integers are less than 100,000,000. 출력For each case, print exactly one line containing only one integer - the reversed..

백준] 9020 - 골드바흐의 추측(ACM-ICPC Regionals)

시간 제한 : 2초메모리 제한 : 256MB 입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고 짝수 n이 주어진다. (4 ≤ n ≤ 10,000) 출력각 테스트 케이스에 대해서 주어진 n의 골드바흐 파티션을 출력한다. 출력하는 소수는 작은 것부터 먼저 출력하며, 공백으로 구분한다. 소스코드#include #include #include using namespace std; int main(void) { int T, N; vector arr(10001, true); vector sosu; cin >> T; for (int i = 2; i =0) { if (max > (N - sosu[i]*2)) { max = N - sosu[i] * 2; ans1 = sosu[..

백준] 5692 - 팩토리얼 진법(ACM-ICPC Regionals)

시간 제한 : 1초메모리 제한 : 128MB 입력입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 최대 5자리인 팩토리얼 진법 숫자가 주어진다. 입력의 마지막 줄에는 0이 하나 주어진다. 출력각 테스트 케이스에 대해서, 입력으로 주어진 팩토리얼 진법 숫자를 10진법으로 읽은 값을 출력한다. 소스코드#include #include using namespace std; int main(void) { std::ios::sync_with_stdio(false); cin.tie(0); int arr[6] = { 0, 1, 2, 6, 24, 120 }; while (1) { string s; int len, sum = 0; cin >> s; if (s == "0"..

백준] 2615 - 오목(KOI 2003 초등부, ACM-ICPC Regionals)

시간 제한 : 1초메모리 제한 : 128MB 입력19줄에 각 줄마다 19개의 숫자로 표현되는데, 검은 바둑알은 1, 흰 바둑알은 2, 알이 놓이지 않는 자리는 0으로 표시되며, 숫자는 한 칸씩 띄어서 표시된다. 출력첫줄에 검은색이 이겼을 경우에는 1을, 흰색이 이겼을 경우에는 2를, 아직 승부가 결정되지 않았을 경우에는 0을 출력한다. 검은색 또는 흰색이 이겼을 경우에는 둘째 줄에 연속된 다섯 개의 바둑알 중에서 가장 왼쪽에 있는 바둑알(연속된 다섯 개의 바둑알이 세로로 놓인 경우, 그 중 가장 위에 있는 것)의 가로줄 번호와, 세로줄 번호를 순서대로 출력한다. 소스코드#include using namespace std; int board[19][19], boardSize = 19; int dir[4][..

백준] 4963 - 섬의 개수(ACM-ICPC Regionals)

시간 제한 : 1초메모리 제한 : 128MB 입력입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다.둘째 줄부터 h개 줄에는 지도가 주어진다. 1은 땅, 0은 바다이다.입력의 마지막 줄에는 0이 두 개 주어진다. 출력각 테스트 케이스에 대해서, 섬의 개수를 출력한다. 소스코드#include #include using namespace std; int dir[8][2] = { {1,0}, {0,1}, {-1,0}, {0,-1}, {1,1}, {1,-1}, {-1,1}, {-1,-1} }; int island, w, h; vector board; vector visit; void dfs(int..

백준] 1864 - 문어 숫자(ACM-ICPC Regionals)

시간 제한 : 1초메모리 제한 : 128MB 입력한 줄에 하나씩 문어 숫자가 입력으로 주어진다. 각 숫자는 최소 한 개, 최대 여덟 개의 문어 숫자 기호로 이루어져있다. 입력으로 '#'이 들어오면 입력을 종료한다. 출력입력 받은 문어 숫자에 대응하는 십진수를 한 줄에 하나씩 출력한다. 소스코드#include #include #include using namespace std; int main(void) { while (1) { int len; long long ans = 0; string str; cin >> str; if (str == "#") break; len = str.length(); for (int i = 1; i

백준] 4597 - 패리티(ACM-ICPC Regionals)

시간 제한 : 1초메모리 제한 : 128MB 입력입력은 여러 개의 비트 스트링으로 이루어져 있다. 각 비트 스트링은 한 줄로 이루어져 있고, 길이는 1~31비트이다. 또, 비트 스트링의 마지막 문자는 e 또는 o이다. (e: 짝수 패리티, o: 홀수 패리티) 마지막 줄에는 '#'이 주어진다. 출력입력으로 주어진 각각의 비트 스트링에 대해서, 마지막 문자를 올바른 비트로 바꾼 비트 스트링을 출력한다. 소스코드 #include #include using namespace std; int main(void) { while (1) { int one = 0, len; string str; cin >> str; if (str == "#") break; len = str.length(); for (int i = 0;..