클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

메서드 12 - 완전수 구하는 5단계 다시 한번 풀어보기 본문

프로그래밍 언어/자바

메서드 12 - 완전수 구하는 5단계 다시 한번 풀어보기

huenuri 2024. 8. 15. 19:48

이번에는 무척 까다로운 문제이지만 한번 풀어보려고 한다. 1단계부터 하나씩 풀다 보면 문제를 해결할 수 있을 것이다. 그럼 바로 문제를 풀어보겠다.


 

 

 

 

 

1. 두 수가 약수인지 아닌지 확인하기

 

 

num1과 num2가 어떨 때 약수가 되는지를 알고 조건을 만드는 것이 이 문제에서 가장 어려운 부분이다. 약수가 되려면 큰 수에서 작은 수를 나누되 그 나머지가 0이 되면 된다. 

num1, num2의 값을 바꾸자 false가 되었다.


 

 

 

 

2. 약수 구하기

 

 

 

정답을 보지 않고 이 문제도 혼자서 아주 잘 풀었다. 처음에는 10의 약수라는 표제어가 반복되기도 했는데 블록 위치를 바꾸어서 코드를 수정했더니 이제는 잘 출력되고 있다.


 

 

 

 

 

3. 약수의 합 구하기

 

 

메소드에 result 변수를 사용하자 오류가 뜨고 있다. 이건 result를 메인 함수에서 담아주었기 때문인 것 같다. 그 이유가 무엇일지 고민해보았다.


 

 

 

코드 수정하기

 

 

 

 

리턴 타입에서 sum을 사용했기 때문에 print 함수에서도 sum을 사용해야 한다. 그리고 result는 여기서 변수로 선언하지 않았기 때문에 사용할 수 없는 것이었다. 하지만 이렇게 print 구문을 사용하면 sum 값의 진행상황이 계속해서 출력되므로 보기가 좋지 않아 선생님은 사용하지 않았던 거였다.

이렇게 코드를 변형해보며 더 많은 것들을 이해하게 되는 걸 느낀다.


 

 

 

 

최종 코드 만들어보기

 


 

 

 

 

 

4. 완전수인지 판별하기

 

 

메서드에서는 대부분 출력이 되지 않는 것 같다. result로 값을 담아주었으나 왜 출력이 되지 않는지 의문이었다. 하지만 isPerfectNumber 메소드는 true나 false 값을 반환하지만, 그 반환된 값을 화면에 출력하지 않았기 때문에 사용자는 결과를 확인할 수 없는 거였다.

이때 출력 코드를 메인 함수에 넣어주면 된다.


 

 

 

 

5. 완전수 구하기

 

 

이 문제를 처음 학습할 때는 1시간도 넘게 생각하면서 풀었었다(이 5단계만). 근데 두번째 학습할 때는 너무나도 쉽게 이해가 되어 정말 신기했다. 그것도 방송을 틀어놓고 학습을 하느라 집중력이 그리 높지 않았는데도 말이다.

이제 완전수를 구하는 것도 잘할 수 있게 되었다.

 


 

 

 

학습을 마치고

이렇게 해서 오늘 완전수를 구하는 5단계 실습을 모두 진행해보았다. 코드는 전체를 붙여볼까도 했지만 이미 다 정리했기에 그럴 필요는 없을 것 같다. 이제 엘리스에서 어려웠던 문제들도 해결하고 남은 메서드 문제를 풀어볼 것이다.

오늘이 가기 전에 클래스 학습을 들어가는 것이 오늘의 목표이다.