Today
Total
07-11 12:52
관리 메뉴

devGYU World

[ Exercism Dart] Scrabble Score 솔루션 본문

etc/exercise

[ Exercism Dart] Scrabble Score 솔루션

devGYU 2022. 3. 18. 13:21

 

본 예제는 입력된 문자열을 분석하여 문자열에 포함된 각 알파벳의 개수만큼 지정된 포인트의 합을 반환한다.

예제를 풀기 위해 같은 포인트 값을 가진 알파벳의 리스트를 생성하였고, 입력된 문자열이 리스트의 알파벳에 포함될 때마다 0부터 시작된 합을 누적하여 반환한다.

 

int score(String? str) {
  int point = 0;

  List<String> value1 = ["A", "E", "I", "O", "U", "L", "N", "R", "S", "T"];
  List<String> value2 = ["D", "G"];
  List<String> value3 = ["B", "C", "M", "P"];
  List<String> value4 = ["F", "H", "V", "W", "Y"];
  List<String> value5 = ["K"];
  List<String> value8 = ["J", "X"];
  List<String> value10 = ["Q", "Z"];

  //문자열이 없다면 아무 알파벳이 없으므로 0 포인트를 반환한다.
  if (str == null) {
    return 0;
  } else {
    for (int i = 0; i < str.length; i++) {
      //알파벳의 대소문자를 가리지 않으므로 toUpperCase를 활용해 계산에 용이하도록 한다.
      if (value1.contains(str.toUpperCase().split('')[i])) {
        point += 1;
      } else if (value2.contains(str.toUpperCase().split('')[i])) {
        point += 2;
      } else if (value3.contains(str.toUpperCase().split('')[i])) {
        point += 3;
      } else if (value4.contains(str.toUpperCase().split('')[i])) {
        point += 4;
      } else if (value5.contains(str.toUpperCase().split('')[i])) {
        point += 5;
      } else if (value8.contains(str.toUpperCase().split('')[i])) {
        point += 8;
      } else if (value10.contains(str.toUpperCase().split('')[i])) {
        point += 10;
      }
    }
  }
  return point;
}

 

코드에 사용된 contains 함수는 주어진 element가 리스트에 포함되는지의 여부를 bool 타입으로 반환한다.

 

참고

 

 

Scrabble Score in Dart on Exercism

Can you solve Scrabble Score in Dart? Improve your Dart skills with support from our world-class team of mentors.

exercism.org

 

GitHub - gyu0710/dart: Exercism Dart Solutions

Exercism Dart Solutions. Contribute to gyu0710/dart development by creating an account on GitHub.

github.com

 

Comments