๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[๋ฐฑ์ค€] 9506๋ฒˆ: ์•ฝ์ˆ˜๋“ค์˜ ํ•ฉ

by ์ฃผ๋ฐœ2 2020. 1. 23.
๋ฐ˜์‘ํ˜•

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

 

9506๋ฒˆ: ์•ฝ์ˆ˜๋“ค์˜ ํ•ฉ

๋ฌธ์ œ ์–ด๋–ค ์ˆซ์ž n์ด ์ž์‹ ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์•ฝ์ˆ˜๋“ค์˜ ํ•ฉ๊ณผ ๊ฐ™์œผ๋ฉด, ๊ทธ ์ˆ˜๋ฅผ ์™„์ „์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค.  ์˜ˆ๋ฅผ ๋“ค์–ด 6์€ 6 = 1 + 2 + 3 ์œผ๋กœ ์™„์ „์ˆ˜์ด๋‹ค. n์ด ์™„์ „์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ. ์ž…๋ ฅ ์ž…๋ ฅ์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ํ•œ ์ค„ ๊ฐ„๊ฒฉ์œผ๋กœ n์ด ์ฃผ์–ด์ง„๋‹ค. (2 < n < 100, 000) ์ž…๋ ฅ์˜ ๋งˆ์ง€๋ง‰์—” -1์ด ์ฃผ์–ด์ง„๋‹ค. ์ถœ๋ ฅ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ๋งˆ๋‹ค ํ•œ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. n์ด ์™„์ „์ˆ˜๋ผ๋ฉด, n์„ n์ด ์•„๋‹Œ ์•ฝ์ˆ˜๋“ค์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด์–ด ์ถœ๋ ฅํ•œ๋‹ค

www.acmicpc.net

 

 

์ฝ”๋“œ 1(ํ‹€๋ฆฐ ์ฝ”๋“œ)

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = 0;
		while(n != -1) {
			n = scan.nextInt();
			int sum = 0;
			for(int i=1; i<=n/2; i++) {
				if(n%i == 0) {
					sum += i;
				}
				if(sum == n) {
					System.out.print(n + " = ");
					for(int j=1; j<=n/2; j++) {
						if(j == n/2) {
							System.out.print(j);
						} else  if(n%j == 0){
							System.out.print(j + " + ");
						}
						
					}
				}
				else if(sum > n) {
					System.out.print(n + " is NOT perfect.");
				}
			}
			System.out.println();
		}
	}
}

 

 

 

ํ’€์ด

์˜ˆ์ œ์— ๋‚˜์˜จ๊ฑฐ๋Š” ๊ทธ๋Œ€๋กœ ๋‚˜์˜ค์ง€๋งŒ ... ์—„์ฒญ ๋ณต์žกํ•˜๊ฒŒ ํ’€์—ˆ๋‹ค.

์ž…๋ ฅ๋ฐ›์€ n์˜ ์•ฝ์ˆ˜๋ฅผ ๋‹ค ๊ตฌํ•ด์„œ sum๋ณ€์ˆ˜์— ํ•ฉํ•˜๊ณ ,

๋งŒ์•ฝ sum๊ณผ n์ด ๊ฐ™์œผ๋ฉด ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ถœ๋ ฅํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ๋‹ค์‹œํ•œ๋ฒˆ ์•ฝ์ˆ˜๋ฅผ ์ฐพ์•„ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ์‹์œผ๋กœ ํ–ˆ๋‹ค..

ํ’€๋ฉด์„œ๋„ ์ด๊ฒŒ๋งž๋‚˜ ์‹ถ์—ˆ๋Š”๋ฐ ์ถœ๋ ฅ์ดˆ๊ณผ? ๋ผ๊ณ  ๋œจ๋ฉด์„œ ์ œ์ถœ์ด ์•ˆ๋œ๋‹ค..

 

 

 

์ฝ”๋“œ 2(์ •๋‹ต ์ฝ”๋“œ)

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		while(true) {
			int n = scan.nextInt();
			if(n == -1)
				break;
			
			int[] arr = new int[n]; // ์•ฝ์ˆ˜ ๋‹ด์„ ๋ฐฐ์—ด
			int sum = 0;			// ์•ฝ์ˆ˜๋“ค์˜ ํ•ฉ
			int index = 0;			// ์•ฝ์ˆ˜ ๋‹ด์„ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค
			for(int i=1; i<n; i++) {
				if(n%i == 0) {		// ์•ฝ์ˆ˜์ผ ๋•Œ
					arr[index++] = i;	// ์•ฝ์ˆ˜ ์ €์žฅ
					sum += i;			// ์•ฝ์ˆ˜ ํ•ฉ
				}
			}
			
			if(sum != n) {
				System.out.println(n + " is NOT perfect.");
				continue;
			}
			
			System.out.print(n + " = ");
			for(int i=0; i<index; i++) {
				if(i == index-1)
					System.out.print(arr[i]);
				else
					System.out.print(arr[i] + " + ");
			}
			System.out.println();
		}
		
		scan.close();
	}

}

ํ’€์ด

์•ฝ์ˆ˜๋ฅผ ๋‹ด์„ ๋ฐฐ์—ด์„ ์„ ์–ธํ•œ ํ›„ ์•ฝ์ˆ˜์ผ๋•Œ ๋ฐฐ์—ด์— ๋„ฃ์–ด์„œ ํŒ๋‹จํ•˜๋Š” ์‹์œผ๋กœ ํ•ด๊ฒฐํ–ˆ๋‹ค.

๋ฐ‘์— ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ถœ๋ ฅ๋งŒ ์ž˜ํ•ด์ฃผ๋ฉด ๋.

 

 

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€