JAVA/JAVA Basic
JAVA Basic : 인터페이스
거셩
2016. 7. 18. 20:58
JAVA Basic : 인터페이스
※ 조건
AdvancedArithmetic 인터페이스를 구현하는 Calculator 클래스를 코딩하라.
divisorSum() 메소드의 구현은
- 반드시 public이여야 한다.
- 파라미터 타입은 int n 이다.
- 모든 제수의 합을 리턴해야 한다.
클래스 정의부분에 접근지정자를 사용하면 안된다.
현재 파일 안의 다른 클래스에 의해 접근이 될 수 있게 접근지정자 public을 메서드 정의부분 전에 사용해야 한다.
1 <= n <= 1000
※ 주어진 코드
: 아래 표시된 영역 안에서만 코딩 할 것.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | interface AdvancedArithmetic{ int divisorSum(int n); } /* 코딩 영역 */ class Solution { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); scan.close(); AdvancedArithmetic myCalculator = new Calculator(); int sum = myCalculator.divisorSum(n); System.out.println("I implemented: " + myCalculator.getClass().getInterfaces()[0].getName() ); System.out.println(sum); } } | cs |
입력
출력
I implemented: AdvancedArithmetic
12 ← 6의 약수의 합 : 1 + 2 + 3 + 6 = 12
디버깅 1
입력된 int값의 약수를 구하고, 약수의 총합을 구하여 출력을 하는 것이다.
약수를 구함과 동시에 약수의 총합을 구하는 변수에 더해야 할 것 같다.
변수정의 :
int cnt, sum
main메소드로부터 입력받는 변수 n
코딩 :
cnt → 1씩 증가 cnt++
num 나누기 1
num 나누기 2
num 나누기 3
...
if ( num % n == 0 )
sum = sum + n
코딩연습 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | interface AdvancedArithmetic{ int divisorSum(int n); } //Write your code here class Calculator implements AdvancedArithmetic { @Override public int divisorSum(int n){ int sum=0; int cnt=0; System.out.println("n : " + n); System.out.println("before]cnt : " + cnt); while(++cnt <= n){ if(n%cnt == 0){ sum = sum + cnt; System.out.printf("while cnt=%d] sum : %d\n",cnt, sum); } } //end while System.out.println("after]cnt : " + cnt); System.out.println("sum : " + sum); return sum; } } //end Calculator class Solution { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); scan.close(); AdvancedArithmetic myCalculator = new Calculator(); int sum = myCalculator.divisorSum(n); System.out.println("I implemented: " + myCalculator.getClass().getInterfaces()[0].getName() ); System.out.println(sum); } } | cs |
|
결과 : n : 6 before]cnt : 0 while cnt=1] sum : 1 while cnt=2] sum : 3 while cnt=3] sum : 6 while cnt=6] sum : 12 after]cnt : 7 sum : 12 I implemented: AdvancedArithmetic 12 |
결과
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | interface AdvancedArithmetic{ int divisorSum(int n); } //Write your code here class Calculator implements AdvancedArithmetic { @Override public int divisorSum(int n){ int sum=0; int cnt=0; while(++cnt <= n){ if(n%cnt == 0){ sum = sum + cnt; } } //end while return sum; } } //end Calculator class Solution { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); scan.close(); AdvancedArithmetic myCalculator = new Calculator(); int sum = myCalculator.divisorSum(n); System.out.println("I implemented: " + myCalculator.getClass().getInterfaces()[0].getName() ); System.out.println(sum); } } | cs |
|
결과 : I implemented: AdvancedArithmetic 12 |
다른 사람이 한 코딩
필자는 while, 이 사람은 for
| class Calculator implements AdvancedArithmetic { public int divisorSum(int n){ int c=0; for(int i=1;i<=n;i++){ if(n%i==0){ c+=i; } } return c; } } //end Calculator | cs |
|
-- |