[BOJ] 백준_23028번_5학년은 다니기 싫어요_C/C++백준 알고리즘2021. 9. 29. 10:09
목차
문제 출처
https://www.acmicpc.net/problem/23028
문제
5학년은 다니기 싫은 아리는 4학년까지 졸업 학점을 채워 졸업할 수 있는지 궁금해졌다. 아리가 졸업하려면 총 130학점 이상 들어야 하고, 그중 66학점 이상은 전공학점이어야 한다. 아리는 현재 2021년 2학기까지 N학기를 마쳤고, 전공학점 A를 포함하여 총 B학점을 이수하였다. 고민하던 아리는 학교 홈페이지에서 다음과 같은 공지가 올라온 것을 확인했다.
2022년 1학기부터 2026년 2학기까지 10개의 학기 동안 개설되는 과목의 수를 공지합니다.
- 2022년 1학기 : 전공과목 X1개, 비전공 과목 Y1개
- 2022년 2학기 : 전공과목 X2개, 비전공 과목 Y2개
- 2023년 1학기 : 전공과목 X3개, 비전공 과목 Y3개
⋮
- 2026년 2학기 : 전공과목 X10개, 비전공 과목 Y10개
2022년 1학기부터는 한 학기에 전공 수업과 비전공 수업을 포함하여 최대 6과목을 수강할 수 있습니다.
한 과목을 수강하게 되면 3학점을 얻게 되고, 그러므로 한 학기에 최대 18학점을 이수할 수 있습니다. 참고하시기 바랍니다.
각 수업은 시간표가 서로 겹치지 않아서 아리는 원하는 수업을 모두 수강할 수 있다. 아리는 최대한 빨리 졸업을 하고 싶어서 휴학을 하지 않는다. 아리를 도와 아리가 전에 마쳤던 학기를 포함하여 총 8학기 안에 졸업할 수 있는지 확인하는 프로그램을 작성해보자.
입력
세 정수 N(1 ≤ N ≤ 7), A(1 ≤ A ≤ 150), B(A ≤ B ≤ 150)이 주어진다.
다음 10개 줄에는 2022년 1학기부터 2026년 2학기까지 차례대로 학기에 개설되는 과목의 수가 주어지고, 한 줄에 한 학기의 전공과목 수 X(1 ≤ X ≤ 6), 비전공과목 수 Y(1≤ Y ≤ 6)이 주어진다.
출력
총 8학기 안에 졸업 조건을 맞출 수 있다면 "Nice"를, 불가능하다면 "Nae ga wae"를 출력한다.
코드
//[BOJ] 23028번_5학년은 다니기 싫어요
#include <iostream>
using namespace std;
int main()
{
int N, A, B;
int X, Y;
int major = 0, non_major = 0, tot = 0, semester = 0;
tot = major + non_major;
cin >> N >> A >> B;
for (int i = 0; i < 10; i++)
{
cin >> X >> Y;
for (int j = 0; j < X+Y; j++) {
if (j == 6)
break;
else if (j >= X)
non_major += 3;
else
major += 3;
}
semester++;
tot = major + non_major;
if ((A + major >= 66) && (B + tot >= 130))
{
cout << "Nice" << endl;
break;
}
if (N + semester == 8)
{
cout << "Nae ga wae" << endl;
break;
}
}
return 0;
}
풀이 과정
공지대로 앞으로의 10학기 동안의 전공과 비전공 과목 개설 수대로 최대한 전공과목부터 수강하는 쪽으로 반복문을 작성했다. 한 학기에 6과목까지 들을 수 있으므로 j가 0부터 시작해서 6이 되었을 경우 7과목째이므로 반복문을 빠져나간다. 또 j가 x와 같아질 경우 이미 전공과목을 모두 담은 상태이므로 비전공과목에 3학점을 추가한다. 그전까지는 전공과목에 3학점을 추가한다. 전공과목 이수 학점이 66 이상이고 총 이수 학점이 130 이상일 경우 "Nice"를 출력하고 반복문을 빠져나와 프로그램을 종료시킨다. 그러나 학기마다 1씩 더해지는 semester 변수가 이전에 이수했던 학점과 더한 값이 8일 경우 4학년 모든 학기가 끝났으므로 "Nae ga wae"를 출력하고 반복문을 빠져나와 프로그램을 종료시킨다.
728x90
반응형
LIST
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_2231번_분해합_C/C++ (0) | 2021.10.05 |
---|---|
[BOJ] 백준_23037번_5의 수난_C/C++ (0) | 2021.10.03 |
[BOJ] 백준_23055번_공사장 표지판_C/C++ (0) | 2021.09.28 |
[BOJ] 백준_22864번_피로도_C/C++ (2) | 2021.09.27 |
[BOJ] 백준_2798번_블랙잭_C/C++ (0) | 2021.09.24 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!