백준 9506번

김경욱·2025년 8월 5일

백준

목록 보기
23/121

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);

    while(true)
    {
        int num = in.nextInt();

        int total = 0;

        int[] numbers = new int[num+1];

        if (num == -1)
        {
            break;

        }

        for (int i = 1 ; i < num; i++)
        {
            if (num % i ==0)
            {
                numbers[i] = i;
                total+=numbers[i];

                }
            }

        if (total == num) {
            System.out.print(num+" = ");
            boolean first = true;
            for (int i = 1; i < num; i++) {
                if(numbers[i] != 0) {
                    if (!first) {
                        System.out.print(" + ");
                    }
                    System.out.print(numbers[i]);
                    first = false;
                }

            }
            System.out.println();
        }


            else{
                    System.out.println(num + " is NOT perfect.");


                }


            }
        }





    }

맨 처음 내가 풀때 나는 조건식을 엄청 많이 사용하였다. boolean변수를 사용할 생각조차 하지 못하였다. 그래서 결국 값은 나오지 않아 지피티한테 자문을 구하였더니 boolean변수를 이용하라는 것이었다. 또한 if(numbers[i] !=0)이라는 기초적인 조건도 생각 못한 내가 바보같았다. boolean이 문제풀 때 생각보다 많이 사용되어서 문제 풀때 불리안을 어떻게 생각해야 하는지를 이번 문제를 통해서 감을 찾은 것 같다.

0개의 댓글