앞으로 수업을 진행하며 풀어본 문제들, 내가 선정한 문제들 올릴예정이다.
문제
https://www.acmicpc.net/problem/9506
백준-9506 약수들의 합(브론즈1)


1.어떤 정수를 입력을 받은 뒤 그 숫자가 완전수인지 판별을 진행한다.
2-1. 완전수이면(ex 6) "6 = 1 + 2 +3"을 출력
2-2. 완전수가 아니라면(ex 12) "12 is NOT perfect."를 출력
3. 입력이 -1이 아니면 2-1, 2-2를 반복
약수를 구하는 과정에서 약수들의 합을 저장해야하고 완전수일시 출력을 위하여 약수들을 저장을 해 두어야 반복작업을 줄일 수 있을것 같다.
#include<iostream>
#include<vector>
using namespace std;
int main(){
int n,sum; //정수를 입력받을 변수, 약수들의 합
vector<int> divisor; //약수저장할 벡터
while(1){
cin >> n;
sum=0;
if(n==-1) break;
for(int i=1;i<=n/2;i++){ //약수 구하기
if(n%i==0) { //약수인지 확인
divisor.push_back(i); //약수면 벡터에 삽입
sum+=i;
}
}
if(sum==n){ //완전수인지 확인
//완전수이면 실행
int size=divisor.size();
cout << n<<" = "<<1;
for(int i=1;i<size;i++){
cout<<" + "<<divisor[i];
}
cout<<endl;
}
else{ //완전수가 아니면 실행
cout << n<<" is NOT perfect."<<endl;
}
divisor.clear(); //벡터 초기화
}
}
결과

개선할 부분
괄호나 변수명, ' ; '의 사용에 틀린부분들이 많이 나오고 출력형식을 지키지 않아 틀린 부분들이 존재하여 이러한 부분들에 주의를 기울일 필요가 있다고 생각된다.