스터디사이트 : https://www.hackerrank.com



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



입력

6            ← 6의 약수 : 1, 2, 3, 6

출력

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

1
2
3
4
5
6
7
8
9
10
11
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

--


+ Recent posts