-
[백준/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