Language/Dart
[Exercism] Armstrong Numbers #num #math
paran21
2022. 8. 19. 16:32
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을 _로 선언하면 되는데, 너무 편해서 좋다!