728x90

백준 알고리즘 190

백준] 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..

백준] 5554 - 심부름 가는 길(JOI 2011 예선)

시간 제한 : 1초메모리 제한 : 128MB 입력입력은 총 4줄이며, 한 줄에 하나씩 양의 정수가 적혀있다.첫 번째 줄에 집에서 학교까지의 이동 시간을 나타내는 초가 주어진다.두 번째 줄에 학교에서 PC방까지의 이동 시간을 나타내는 초가 주어진다.세 번째 줄에 PC방에서 학원까지의 이동 시간을 나타내는 초가 주어진다. 마지막 줄에 학원에서 집까지의 이동 시간을 나타내는 초가 주어진다.집에 늦게 가면 혼나기 때문에, 총 이동시간은 항상 1 분 0 초 이상 59 분 59 초 이하이다. 출력총 이동시간 x 분 y 초를 출력한다. 첫 번째 줄에 x를, 두 번째 줄에 y를 출력한다. 소스코드 #include using namespace std; int main(void) { int a, b, c, d, x, y,..

백준] 1551 - 수열의 변화

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 수열의 크기 N과 K가 주어진다. N은 20보다 작거나 같은 자연수이고, K는 0보다 크거나 같고, N-1보다 작거나 같은 자연수이다. 둘째 줄에는 수열이 ‘,’로 구분되어 주어진다. 출력첫째 줄에 K번 변형한 수열을 ‘,’로 구분하여 출력한다. 소스코드#include #include #include using namespace std; void tokenizer(string& str, vector& token, string delimiter) { size_t lastPos = str.find_first_not_of(delimiter, 0); size_t pos = str.find_first_of(delimiter, lastPos); while ..

백준] 1032 - 명령 프롬프트

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 알파벳과 "." 그리고 "?"로만 이루어져 있다. 출력첫째줄에 패턴을 출력하면 된다. 소스코드 #include #include using namespace std; int main() { int n, len; char s[51], c; cin >> n >> s; len = strlen(s); for (int i = 1; i > c; s[j] = s[j] - c ? '?' : c..

728x90