https://exercism.org/tracks/dart/exercises/armstrong-numbers
처음에 문제 조건을 잘못 이해해서 조금 해맸다.
먼저 제곱을 계산하기 위해 'dart:math' library를 사용하였다.
그리고 다트에서는 int.parse(String word)를 통해 String 숫자를 int로 변환할 수 있다.(double.parse도 있다!)
math의 pow를 사용해서 각 자리 숫자를 주어진 수(number)의 전체 길이만큼 계속 곱해서 나온 값의 총합(_sumOfEachNum)을 구한다.
그리고 이 값이 처음에 주어진 수와 일치하는지를 판별하면 된다.
pow의 리턴 타입은 int와 double를 포함하는 num이다.
import 'dart:math';
class ArmstrongNumbers {
bool isArmstrongNumber(int number) {
num _sumOfEachNum = _getSumOfEachNum(number);
return _sumOfEachNum == number;
}
num _getSumOfEachNum(int number) {
List<String> numbers = number.toString().split('');
num _sum = 0;
numbers.forEach((number) {
_sum += pow(int.parse(number), numbers.length);
});
return _sum;
}
}
다트에서는 private을 _로 선언하면 되는데, 너무 편해서 좋다!
'Language > Dart' 카테고리의 다른 글
[Exercism] Difference Of Squares (0) | 2022.08.30 |
---|---|
[Style] no_leading_underscores_for_local_identifiers (0) | 2022.08.19 |
[Exercism] Scrabble Score #가독성 있는 코드란?2 (0) | 2022.08.18 |
[Exercism] Leap #가독성 있는 코드란? (0) | 2022.08.18 |
[Exercism] Two Fer #Optional positional parameters (0) | 2022.08.18 |