반응형

백준 11948번 과목선택 풀이 코드

C | C++ | Java | Python


풀이

정렬에 qsort() 함수를 사용하기 위해 stdlib.h를 불러오고 compare함수를 작성합니다. 오름차순일 때 compare 함수는 첫 번째 인자가 클 경우 1, 작을 경우 -1, 같을 경우 0을 반환합니다.

입력값은 4개, 2개씩 순서대로 받고 각각 정렬합니다. 4개 중 뒤쪽 3개, 2개 중 큰 값 하나(삼항 연산으로 처리)를 더하고 그 값을 출력합니다.

정렬에 sort() 함수를 사용하기 위해 먼저 algorithm을 불러옵니다.

입력값을 4개, 2개씩 순서대로 받고 각각 정렬한 후 4개 중 뒤쪽 3개, 2개 중 큰 값 하나를 더하고 그 값을 출력합니다.

int 배열에 입력값을 받고 Array.sort()로 두 구간을 나눠 정렬합니다. 그 후 4개 중 뒤쪽 3개, 2개 중 큰 값 하나를 더하고 그 값을 출력합니다.

배열에 입력값을 받고 sorted()로 두 구간을 나눠 정렬합니다. 그 후 4개 중 뒤쪽 3개, 2개 중 뒤쪽 1개 값을 더해 출력합니다.

코드

#include <stdio.h>
#include <stdlib.h>

int compare(const void* a, const void* b){
    if (*(int*)a > *(int*)b)
        return 1;
    else if (*(int*)a < *(int*)b)
        return -1;
    else
        return 0;
}

int main(){
    int li1[4], li2[2], i, sum = 0;
    for(i=0; i<4; i++){
        scanf("%d", &li1[i]);
    }
    for(i=0; i<2; i++){
        scanf("%d", &li2[i]);
    }
    
    qsort(li1, 4, sizeof(int), compare);
    qsort(li2, 2, sizeof(int), compare);
    
    for(i=1; i<4; i++){
        sum += li1[i];
    }
    sum += (li2[0]>li2[1] ? li2[0] : li2[1]);
    
    printf("%d", sum);
    return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    int li1[4], li2[2], sum = 0;
    for(int i=0; i<4; i++){
        cin>>li1[i];
    }
    for(int i=0; i<2; i++){
        cin>>li2[i];
    }
    
    sort(li1, li1+4);
    sort(li2, li2+2);
    
    for(int i=1; i<4; i++){
        sum += li1[i];
    }
    sum += max(li2[0], li2[1]);
    
    cout<<sum;
    return 0;
}
import java.util.Scanner;
import java.util.Arrays;
import java.lang.Math;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] li = new int[6];
        int sum = 0;
        
        for(int i=0; i<6; i++){
            li[i] = sc.nextInt();
        }
        
        Arrays.sort(li, 0, 4);
        Arrays.sort(li, 4, 6);
        
        for(int i=1; i<4; i++){
        sum += li[i];
        }
        sum += Math.max(li[4], li[5]);
        
        System.out.println(sum);
    }
}
li = [] 
for _ in range(6):  
    li.append(int(input())) 
li1 = sorted(li[:4]) 
li2 = sorted(li[4:]) 
print(sum(li1[1:]) + li2[-1])

문제 출처

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

반응형

+ Recent posts