728x90
SMALL
백준 문제 풀이: 20299 [3대 측정]
문제 링크: https://www.acmicpc.net/problem/20299
문제 설명:
각 팀의 3대 측정 기록이 주어질 때, 특정 기준을 만족하는 팀의 개수와 해당 팀의 측정 기록을 출력하는 문제입니다. 각 팀의 3대 기록은 세 가지 조건을 만족해야 합니다:
- 각 팀원의 기록 a, b, c가 최소 l 이상이어야 합니다.
- 세 팀원의 기록 합계가 최소 k 이상이어야 합니다.
조건을 만족하는 팀의 수와 각 팀의 기록을 순서대로 출력해야 합니다.
문제 해결 코드
// C++로 구현된 코드
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, k, l;
cin >> n >> k >> l; // 팀 수(n), 최소 합(k), 개인 최소 점수(l)
int cnt = 0; // 조건을 만족하는 팀 수
string result = ""; // 조건을 만족하는 팀원의 기록
for (int i = 0; i < n; i++) {
int a, b, c;
cin >> a >> b >> c; // 각 팀원의 기록
if ((a >= l && b >= l && c >= l) && (a + b + c >= k)) {
cnt++; // 조건을 만족하는 팀 수 증가
result += to_string(a) + " " + to_string(b) + " " + to_string(c) + " "; // 결과 문자열에 기록 추가
}
}
cout << cnt << '\n'; // 조건을 만족하는 팀 수 출력
cout << result; // 조건을 만족하는 팀의 기록 출력
return 0;
}
코드 설명
코드의 주요 로직과 사용된 알고리즘 설명.
- 핵심 알고리즘:
- 모든 팀의 기록을 확인하며 조건을 만족하는지 검증합니다.
- 조건을 만족하는 팀의 기록은 문자열로 저장하고 팀의 개수를 계산합니다.
- 구현 세부사항:
- 입력받은 팀의 기록을 각각 확인하며 조건을 만족하면 결과 문자열에 추가합니다.
- 개인 점수가 모두 l 이상인지 확인하고, 합계가 k 이상인지를 별도로 확인합니다.
- 문자열 조작을 통해 조건을 만족하는 팀원의 기록을 저장합니다.
- 시간 복잡도 분석:
- 팀의 수가 n일 때, 각 팀의 기록을 확인하는 작업은 O(n)입니다.
- 각 팀의 기록에 대한 검증과 문자열 조작 작업은 상수 시간에 처리되므로 O(1)입니다.
- 전체 복잡도는 O(n)입니다.
결과
입력된 팀 중 조건을 만족하는 팀의 수와 각 팀원의 기록을 정확히 출력합니다.
해당 문제에 대한 다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!
728x90
LIST
'BAEKJOON > 구현' 카테고리의 다른 글
백준 1996번 [지뢰 찾기](C++) -yes6686- 티스토리 (4) | 2024.07.22 |
---|---|
백준 31066번 [비 오는 날](C++) -yes6686- 티스토리 (0) | 2024.07.21 |
백준 20361번 [일우는 야바위꾼](C++) -yes6686- 티스토리 (0) | 2024.07.16 |
백준 21567번 [숫자의 개수 2](C++) -yes6686- 티스토리 (0) | 2024.07.16 |
백준 4378번 [트ㅏㅊ;](C++) -yes6686- 티스토리 (3) | 2024.07.15 |