[Python] 27922. 현대모비스 입사 프로젝트

2023. 4. 19. 23:41·study/백준(BOJ)
728x90

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

 

27922번: 현대모비스 입사 프로젝트

$2$번째 강의와 $3$번째 강의를 들었을 경우 증가하는 역량은 각각 $56,17,7$이고, 이때 두 개의 역량의 합은 $56+17=73$으로 가능한 값 중 최대이다.

www.acmicpc.net

 

접근법

  • 3개의 역량 중 2개의 역량만을 선택해서 증가시킬 수 있음.
    -> 각 강의에서 얻을 수 있는 2개의 역량들의 합을 arr에 각각 저장(sum_12, sum_23, sum_13)
  • N개 중 K개의 강의만 들을 수 있기 때문에 정렬한 arr들 큰 K개들의 합을 구함(max_12, max_23, max_13)
  •  큰 K개들의 합 중 max값을 출력
#def find_max(N, K):
    sum_12 = []
    sum_23 = []
    sum_13 = []
    for i in range(N):
        x,y,z = map(int, input().split())
        # 3개의 역량 중 2개의 역량을 골랐을 때의 합을 각 arr에 저장
        sum_12.append(x+y)
        sum_23.append(y+z)
        sum_13.append(x+z)

    # 2개의 역량의 합 중 가장 큰 것을 찾기 위해 정렬
    sum_12.sort()
    sum_23.sort()
    sum_13.sort()

    """
    max_12에는 각 강의들의 1,2역량의 합이 저장되어 있음.
    여기서 k개의 강의를 듣는다고 했을 때 정렬 후, 큰 값 k개들의 합을 구하면
    어떤 강의를 듣는지는 모르지만 1,2역량으로 얻을 수 있는 가장 큰 값을 얻을 수 있음.
    max_23, max_13도 동일
    """
    max_12 = sum(sum_12[-K : ])
    max_23 = sum(sum_23[-K : ])
    max_13 = sum(sum_13[-K : ])

    """
    앞서 max_12, max_23, max_13에서 구한 값들은 어떤 강의를 듣는지 모른다고 했음.
    이를 몰라도 되는 이유는 어차피 2개의 역량만을 선택할 수 있기 때문.
    따라서 출력으로 max_12, max_23, max_13 중 max값을 통해 
    N개의 과목 중 K개를 들었을 때 3개의 역량 중 2개의 역량으로 얻을 수 있는 최대값을 출력 가능. 
    """
    print(max(max_12, max_23, max_13))

def main():
    N, K = map(int, input().split())
    find_max(N, K)

if __name__ == "__main__":
    main()


사용된 알고리즘

그리디 알고리즘, 정렬

 

728x90

'study > 백준(BOJ)' 카테고리의 다른 글

[Python] 27211. 도넛 행성  (0) 2023.04.25
[Python] 23351. 물 주기  (0) 2023.04.25
[Python] 2470. 두 용액  (0) 2023.04.19
[Python] 1072. 게임  (0) 2023.04.19
[Python] 1182. 부분 수열의 합  (0) 2023.04.16
'study/백준(BOJ)' 카테고리의 다른 글
  • [Python] 27211. 도넛 행성
  • [Python] 23351. 물 주기
  • [Python] 2470. 두 용액
  • [Python] 1072. 게임
bbooo
bbooo
  • bbooo
    bbooo
    bbooo
  • 전체
    오늘
    어제
    • 분류 전체보기 (142)
      • study (61)
        • 백준(BOJ) (34)
        • Programmers (15)
        • LeetCode (9)
      • AI (4)
        • Paper (0)
      • SSAC X IFFEL (4)
        • DeepML (1)
        • 밑바닥 부터 시작하는 딥러닝 (2)
      • 회고 (46)
      • Error (10)
      • Setting (15)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    vscode
    파이썬 과제 진행하기
    docker
    백트래킹
    백준 2470
    LeetCode
    set
    그리디 알고리즘
    브루트포스
    programmers 과제 진행하기
    Counter
    두 포인터
    Til
    코딩테스트 준비
    typeerror: sequence item 0: expected str instance int found
    풀이 실패
    투포인터
    항해99
    파이썬 석유시추
    99클럽
    python 과제 진행하기
    sort
    파이썬
    프로그래머스 석유시추
    programmers 석유시추
    문자열을 원하는 길이로
    sequence item 0: expected str instance int found
    개발자 취업
    python 석유시추
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
bbooo
[Python] 27922. 현대모비스 입사 프로젝트
상단으로

티스토리툴바