728x90

풀이 5

백준] 2583 - 영역 구하기(한국정보올림피아드 2006; KOI 2006)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오른쪽 위 꼭짓점의 x, y좌표값이 빈칸을 사이에 두고 차례로 주어진다. 모눈종이의 왼쪽 아래 꼭짓점의 좌표는 (0,0)이고, 오른쪽 위 꼭짓점의 좌표는(N,M)이다. 입력되는 K개의 직사각형들이 모눈종이 전체를 채우는 경우는 없다. 출력첫째 줄에 분리되어 나누어지는 영역의 개수를 출력한다. 둘째 줄에는 각 영역의 넓이를 오름차순으로 정렬하여 빈칸을 사이에 두고 출력한다. 소스코드#include #include #include #include usin..

백준] 5556 - 타일(일본정보올림피아드 2011;JOI 2011)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 한 변의 길이 N이 주어진다. (1 ≤ N ≤ 109) 둘째 줄에는 창영이가 제거한 타일의 개수 K가 주어진다. (1 ≤ K ≤ 1000) 다음 줄부터 K개 줄에는 창영이가 제거한 타일의 위치 ai bi가 제거한 순서대로 주어진다. (1 ≤ ai ≤ N, 1 ≤ bi ≤ N) 타일은 왼쪽에서 ai번째, 위에서 bi번째에 있다. 같은 타일을 두 번 이상 제거하는 경우는 없다. 출력창영이가 제거한 순서대로 타일의 색상을 출력한다. 빨간색은 1, 파란색은 2, 노란색은 3을 출력한다. 소스코드#include using namespace std; int main(void) { int N, K, half; cin >> N >> K; half = N / 2..

백준] 1049 - 기타줄

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주어진다. 가격은 0보다 크거나 같고, 1,000보다 작거나 같은 정수이다. 출력첫째 줄에 김지민이 기타줄을 적어도 N개 사기 위해 필요한 돈의 최솟값을 출력한다. 소스코드#include #include using namespace std; int main(void) { int n, m, sum = 0; int package[50], piece[50]; bool cheap = false; cin >> n >> m; for (int i = 0; i < m; i++..

백준] 2858 - 기숙사 바닥(COCI 2010/2011)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 빨간색 블럭의 수 R과 갈색 블럭의 B가 주어진다. (8 ≤ R ≤ 5000, 1 ≤ B ≤ 2,000,000) 출력첫째 줄에 상근이네 방의 크기 L과 W을 공백으로 구분하여 출력한다. 만약, 두 수가 다르다면, 큰 수가 L이 되고 작은 수가 W이 된다. 항상 정답이 유일한 경우만 입력으로 주어진다. 소스코드 #include using namespace std; int main(void) { int r, b, sum; int sw, sl, w, l; cin >> r >> b; for (l = 1;; l++) { if (b%l == 0) w = b / l; sum = w * 2 + l * 2 + 4; if (sum == r) { if (w > l)..

백준] 3040 - 백설 공주와 일곱 난쟁이(COCI 2006/2007)

시간 제한 : 1초메모리 제한 : 128MB 입력총 아홉개 줄에 1보다 크거나 같고 99보다 작거나 같은 자연수가 주어진다. 모든 숫자는 서로 다르다. 또, 항상 답이 유일한 경우만 입력으로 주어진다. 출력일곱 난쟁이가 쓴 모자에 써 있는 수를 한 줄에 하나씩 출력한다. 소스코드 #include using namespace std; int main(void) { int arr[9], sum = 0; for (int i = 0; i > arr[i]; sum += arr[i]; } for (int i = 0; i < 8; i++) { for (int j = i + 1; j < 9; j++) { if (sum - arr[i] - arr[j] == 100) { for (int k ..

728x90