본문 바로가기

프로그래밍/알고리즘(자바)

하샤드수 Level 2 #return 조건문 #foreach문

하샤드수 Level 2

 

문제 자체는 split메소드만 할 줄 알면 되는 간단한 문제. 또 foreach문으로 간결하게 표현가능하다.

 

배운 점은 retrun값에 조건문 자체를 참거짓으로 표현가능하다는 것이다.

 

public class HarshadNumber{     public boolean isHarshad(int num){         String[] numArr = String.valueOf(num).split("");     int sum = 0;     for(String numStr : numArr){       sum += Integer.parseInt(numStr);     }     return num%sum==0 ;  //조건문으로 retrun 가능!     }     public static void  main(String[] args){         HarshadNumber sn = new HarshadNumber();         System.out.println(sn.isHarshad(18));     } }

 

 

 >>> 최근 API를 사용한 풀이법

 

String 문자열을 chars()메소드를 통해 IntStream 타입으로 변환하고 ForEach문을 통해 이 값을 전부 더한다. 

 

그리고 String을 Int형처럼 연산하고 싶을 때 쓰는 방법이 있다는 것을 깨달았다.

 

sum+= c - '0' ;   

      기억해 두자!

 

import java.util.function.IntConsumer;  public class HarshadNumber{     private int sum = 0;     public boolean isHarshad(int num){         sum = 0;         Integer.toString(num).chars().forEach(c -> sum += c - '0');         return num % sum == 0;     }         // 아래는 테스트로 출력해 보기 위한 코드입니다.     public static void  main(String[] args){         HarshadNumber sn = new HarshadNumber();         System.out.println(sn.isHarshad(18));     } }