하샤드수 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)); } }
'프로그래밍 > 알고리즘(자바)' 카테고리의 다른 글
시간 복잡도 및 아스키코드 (0) | 2018.10.16 |
---|---|
야근 지수 Level 3 #Collection.reverse (0) | 2018.05.08 |
행렬의 곱셈 Level 2 # Arrays.deepToString # Arrays.toString (0) | 2018.05.07 |
정수 내림차순으로 배치하기 Level 2 #split #Arrays.sort #Collections.reverse #Arrays.asList #String.join (0) | 2018.05.07 |
2016년 Level 2 #달력(요일) 알고리즘 (0) | 2018.05.07 |