λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Algorithm

[SW Expert Academy] - (D3)8500. κ·Ήμž₯ μ’Œμ„

by 주발2 2020. 5. 26.
λ°˜μ‘ν˜•

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWz5yIfq74QDFARQ&categoryId=AWz5yIfq74QDFARQ&categoryType=CODE

 

SW Expert Academy

SW ν”„λ‘œκ·Έλž˜λ° μ—­λŸ‰ 강화에 도움이 λ˜λŠ” λ‹€μ–‘ν•œ ν•™μŠ΅ 컨텐츠λ₯Ό ν™•μΈν•˜μ„Έμš”!

swexpertacademy.com

μ½”λ“œ

import java.util.Arrays;
import java.util.Scanner;

public class Solution {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		int T = scan.nextInt();
		for(int tc=1; tc<=T; tc++) {
			int N = scan.nextInt();
			int[] seats = new int[N];
			for(int i=0; i<seats.length; i++) {
				seats[i] = scan.nextInt();
			}
			Arrays.sort(seats);
			
			int minSeats = N;	// Nλͺ…μ˜ μ’Œμ„μ΄ ν•„μš”ν•˜λ―€λ‘œ μ΄ˆκΈ°κ°’μœΌλ‘œ N μ„€μ •
			
			for(int i=0; i<seats.length; i++) {
				minSeats += seats[i];
			}
			
			minSeats += seats[seats.length-1];	// κ°€μž₯ 였λ₯Έμͺ½ μ‚¬λžŒμ˜ 자리 λ”ν•˜κΈ°
			
			System.out.println("#" + tc + " " + minSeats);
			
		}
		
		scan.close();
	}

}

풀이

κ·Ήμž₯의 μ’Œμ„ 개수λ₯Ό μ΅œμ†Œν•œμ΄ λ˜κ²Œν•˜λ €λ©΄ μ–΄λ–»κ²Œ 자리λ₯Ό μ„€μ •ν•΄μ•Ό μ΅œμ†Œκ°’μ΄ λ‚˜μ˜¬μ§€ 생각해보면 λœλ‹€.

주어진 ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€ 2번의 경우 5 2 3 1 4 이닀.

 

o o o o o 5 o o o o o 2 o o 3 o o o 1 o o o o 4 o o o o

 

주어진 λŒ€λ‘œλΌλ©΄ μ΅œμ†Œν•œμ˜ μ’Œμ„κ°œμˆ˜λŠ” μœ„μ™€ 같이 28개의 μ’Œμ„μ΄ ν•„μš”ν•˜λ‹€.

 

μ΅œμ†Œν•œμ΄ 되게 ν•˜λ €λ©΄ μˆ«μžκ°€ λΉ„μŠ·ν•œ 값듀끼리 μΈμ ‘ν•œ 자리둜 μ„€μ •ν•˜λ©΄ λœλ‹€.

즉 정렬을 ν•˜λ©΄ λœλ‹€.

 

o 1 o o 2 o o o 3 o o o o 4 o o o o o 5 o o o o o

 

μœ„μ™€ 같이 μ„€μ •ν•˜λ©΄ μ’Œμ„ κ°œμˆ˜λŠ” μ΅œμ†Œκ°€λ˜κ³ , 25개의 μ’Œμ„μ΄ ν•„μš”ν•˜λ‹€.

 

그럼 μœ„μ™€ 같이 λμ„λ•Œ, μ’Œμ„μ˜ κ°œμˆ˜λŠ” ν•΄λ‹Ή 값을 λ”ν•˜κ³ , Nλͺ…κ³Ό κ°€μž₯ 큰 κ°’(λ§ˆμ§€λ§‰κ°’) 을 더해주면 λœλ‹€.

 

λ°˜μ‘ν˜•

λŒ“κΈ€