※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 14368번 문제인 Fashion Police (Large)이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/14368 

 

14368번: Fashion Police (Large)

For each test case, output one line containing Case #x: y, where x is the test case number (starting from 1) and y is an integer: the maximum number of days you will be able to avoid being taken to Fashion Jail. Then output y more lines, each of whi

www.acmicpc.net

1jJ, 1pP를 만족하는 jp로 이루어진 각 순서쌍 (j,p)에 대하여, 이 둘을 모두 포함하는 3-tuple (j,p,s) (단, 1sS)는 많아야 K개임을 조건을 통해 알 수 있다. 따라서, 문제의 답은 항상 JPK 이하임을 관찰할 수 있다. 물론, 만들 수 있는 모든 tuple의 개수 JPS를 넘지는 못하므로, KS보다 클 경우 그 값이 S와 같다고 생각해도 좋을 것이다.

 

여기서 조금 더 관찰을 해보면 JPK개의 3-tuple (j,p,s)를 항상 찾아낼 수 있는 방법이 있다는 것을 알 수 있다. 먼저 직접 생각을 해보고, 생각이 나지 않을 때에만 아래의 코드를 참고하는 것을 추천한다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int T; cin >> T;
	for (int t = 1; t <= T; t++) {
		int J, P, S, K; cin >> J >> P >> S >> K;
		if (K > S) K = S;
		cout << "Case #" << t << ": " << J * P * K << '\n';
		for (int j = 1; j <= J; j++) {
			for (int p = 1; p <= P; p++) {
				for (int k = 0; k < K; k++) {
					cout << j << ' ' << p << ' ' << (j + p + k - 1) % S + 1 << '\n';
				}
			}
		}
	}
}

 

728x90

'BOJ' 카테고리의 다른 글

[BOJ 5489 // C++] Numbers  (0) 2023.05.07
[BOJ 14367 // C++] Fashion Police (Small)  (0) 2023.05.06
[BOJ 14373 // C++] Technobabble (Small)  (0) 2023.05.04
[BOJ 14374 // C++] Technobabble (Large)  (0) 2023.05.03
[BOJ 14371 // C++] Close Match (Small)  (0) 2023.05.02

+ Recent posts