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

[λ°±μ€€] 2576번: ν™€μˆ˜

by 주발2 2020. 1. 20.
λ°˜μ‘ν˜•

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

 

2576번: ν™€μˆ˜

7개의 μžμ—°μˆ˜κ°€ μ£Όμ–΄μ§ˆ λ•Œ, 이듀 쀑 ν™€μˆ˜μΈ μžμ—°μˆ˜λ“€μ„ λͺ¨λ‘ 골라 κ·Έ 합을 κ΅¬ν•˜κ³ , κ³ λ₯Έ ν™€μˆ˜λ“€ 쀑 μ΅œμ†Ÿκ°’μ„ μ°ΎλŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 예λ₯Ό λ“€μ–΄, 7개의 μžμ—°μˆ˜ 12, 77, 38, 41, 53, 92, 85κ°€ 주어지면 이듀 쀑 ν™€μˆ˜λŠ” 77, 41, 53, 85μ΄λ―€λ‘œ κ·Έ 합은 77 + 41 + 53 + 85 = 256 이 되고, 41 < 53 < 77 < 85 μ΄λ―€λ‘œ ν™€μˆ˜λ“€ 쀑 μ΅œμ†Ÿκ°’μ€ 41이 λœλ‹€.

www.acmicpc.net

 

 

 

 

 

μ½”λ“œ

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

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int[] num = new int[7];
		int[] odd = new int[7];
		int oddIndex = 0;	// ν™€μˆ˜ λ°°μ—΄ 인덱슀
		int oddMin = 0;		// ν™€μˆ˜ λ°°μ—΄ μ΅œμ†Ÿκ°’
		int sum = 0;        // ν™€μˆ˜ ν•©
		
		for(int i=0; i<num.length; i++) {
			num[i] = scan.nextInt();
			if(num[i] % 2 == 1) {
				sum += num[i];
				odd[oddIndex++] = num[i];
			}
		}
		
		Arrays.sort(odd);
		for(int i=0; i<odd.length; i++) {
			if(odd[i] != 0) {
				oddMin = odd[i];
				break;
			}
		}
		
		if(sum != 0) 
			System.out.println(sum + "\n" + oddMin);
		else
			System.out.println("-1");
		scan.close();
		
	}

}

 

 

풀이

 

// 0)

num[]: μžμ—°μˆ˜ 7개λ₯Ό μž…λ ₯받을 λ°°μ—΄

odd[]: num 배열쀑 ν™€μˆ˜λ₯Ό μ €μž₯ν•  λ°°μ—΄

oddIndex: ν™€μˆ˜ λ°°μ—΄μ˜ 인덱슀둜 μ‚¬μš©ν•  λ³€μˆ˜

oddMin: ν™€μˆ˜ 배열쀑 μ΅œμ†Ÿκ°’μ„ μ €μž₯ν•  λ³€μˆ˜

sum: ν™€μˆ˜ λ°°μ—΄μ˜ 총 합을 μ €μž₯ν•  λ³€μˆ˜

 

// 1)

num[] 배열에 μž…λ ₯λ°›κ³ , μž…λ ₯받은 μˆ˜κ°€ ν™€μˆ˜μ΄λ©΄ sum에 λ”ν•˜κ³ , odd 배열에 μ €μž₯ν•œλ‹€.

0λ²ˆμ§ΈλΆ€ν„° μ €μž₯ν•˜λ―€λ‘œ μ €μž₯ν• λ•Œλ§ˆλ‹€ oddIndex에 ++λ₯Ό 톡해 μΈλ±μŠ€κ°’μ„ μ¦κ°€μ‹œμΌœμ€€λ‹€.

 

 

// 2)

μœ„μ™€ 같이 μ •λ ¬μ„ν–ˆμ„λ•Œ, 짝수면 0이 μ €μž₯λ˜λ―€λ‘œ 0이 μ•„λ‹Œ 졜초의 값이 μ΅œμ†Ÿκ°’μ΄λ‹€.

이 값을 oddMin λ³€μˆ˜μ— μ €μž₯ν•œν›„ λΉ μ Έλ‚˜μ˜¨λ‹€.

 

// 3)

ν™€μˆ˜κ°€ μžˆμ„κ²½μš°, sum이 0이 μ•„λ‹ˆλ―€λ‘œ ν•©κ³Ό μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•˜κ³ , sum이 0일경우 -1을 좜λ ₯ν•œλ‹€.

 

 

 

λ°˜μ‘ν˜•

λŒ“κΈ€