[백준] 23028번 5학년은 다니기 싫어요

거북이·2023년 7월 1일
0

백준[실버5]

목록 보기
103/114
post-thumbnail

💡문제접근

  • 전체 이수 학점은 전공 학점과 비전공 학점으로 구성되는데 졸업을 위해선 전공 학점과 전체 이수 학점의 조건이 주어지는데 여기서 전공 학점을 우선적으로 먼저 수강해도 문제가 없기 때문에 전공 학점에 초점을 맞추고 만약 더 들을 수 있다면 비전공 학점을 더 들을 수 있도록 코드를 작성하여 해결했다.

💡코드(메모리 : 31256KB, 시간 : 40ms)

import sys
input = sys.stdin.readline

N, A, B = map(int, input().strip().split())

major = []      # 전공 학점
non_major = []  # 비전공 학점(학기마다 정해진 과목의 수)
for _ in range(10):
    X, Y = map(int, input().strip().split())    # 전공 과목 개수와 비전공 과목 개수
    major.append(X)
    non_major.append(Y)

semester = 8 - N    # 남은 학기
if B >= 130 and A >= 66:
    print("Nice")
else:
    # 전체 학점을 채워야 되는데 우선순위 1순위 : 전공 학점
    for i in range(semester):
        A += major[i] * 3
        B += major[i] * 3
        # 수강할 수 있는 비전공 과목의 개수
        subject = 6 - major[i]
        if subject < non_major[i]:
            B += subject * 3
        else:
            B += non_major[i] * 3
        subject = 6

    if B >= 130 and A >= 66:
        print("Nice")
    else:
        print("Nae ga wae")

💡소요시간 : 17m

0개의 댓글