ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준/JAVA] 11508번: 2+1 세일
    Algorithm 2024. 7. 16. 17:41

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

     

    - 정답 코드

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    import java.util.Collections;
    
    public class Main {
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
            int N = Integer.parseInt(br.readLine());
            Integer[] list = new Integer[N];
    
            for(int i = 0; i < N; i++) {
                list[i] = Integer.parseInt(br.readLine());
            }
    
            // 내림차순 정렬
            Arrays.sort(list, Collections.reverseOrder());
    
            int won = 0;
    
            for(int i = 0; i < N; i++) {
                // 3개씩 묶어서 가장 싼 것을 무료로 
                // 3번째마다 무료 처리
                if((i + 1) % 3 != 0) {
                    won += list[i];
                }
            }
    
            System.out.println(won);
        }
    }

    - 코드 설명

     

    int won = 0;
    
    for (int i = 0; i < N; i++) {
        // 3개씩 묶어서 가장 싼 것을 무료로 
        // 3번째마다 무료 처리
        if ((i + 1) % 3 != 0) {
            won += list[i];
        }
    }

     

    • int won = 0;는 총 비용을 저장할 변수를 초기화합니다.
    • for (int i = 0; i < N; i++) 루프는 0부터 N-1까지 반복하여 모든 유제품의 가격을 순회합니다.
    • (i + 1) % 3 != 0 조건은 인덱스 i가 3번째마다 무료로 처리하기 위해 사용됩니다. (i + 1)로 하는 이유는 배열의 인덱스는 0부터 시작하지만, 우리는 1번째, 2번째, 3번째와 같이 1부터 시작하는 순서를 원하기 때문입니다.
      • (i + 1) % 3 == 0일 때, 즉 3번째마다 무료로 처리합니다.
    • won += list[i];는 해당 가격을 총 비용에 더합니다. 하지만 3번째 항목은 무료이기 때문에 추가되지 않습니다.

     

     

    ex)

    • 입력: 6, 4, 5, 5, 5, 5
    • 내림차순 정렬: 6, 5, 5, 5, 5, 4
    • 반복문 실행:
      • i=0: 6 (6 추가)
      • i=1: 5 (5 추가)
      • i=2: 5 (무료)
      • i=3: 5 (5 추가)
      • i=4: 5 (5 추가)
      • i=5: 4 (무료)
    • 총 비용: 6 + 5 + 5 + 5 = 21

     

    'Algorithm' 카테고리의 다른 글

    [백준/JAVA] 20300번: 서강근육맨  (0) 2024.07.17
    [백준/JAVA] 11399번: ATM  (0) 2024.07.17
    [백준/JAVA] 1758번: 알바생 강호  (0) 2024.07.16
    [백준/JAVA] 2217번: 로프  (0) 2024.07.16
    [백준/JAVA] 1343번: 폴리오미노  (0) 2024.07.16
Designed by Tistory.