트랙
/
Go
Go
/
연습 문제
/
알파메틱스
알파메틱스

알파메틱스

어려움

지침

주어진 알파메틱스 퍼즐의 정답을 찾아요.

알파메틱스는 단어의 글자를 숫자로 바꾸는 퍼즐이에요.

예를 들어 SEND + MORE = MONEY는 다음과 같아요:

  S E N D
  M O R E +
-----------
M O N E Y

이 글자들을 올바른 숫자로 바꾸면 다음과 같아요:

  9 5 6 7
  1 0 8 5 +
-----------
1 0 6 5 2

모든 글자가 서로 다른 숫자로 바뀌고, 그렇게 숫자로 옮긴 단어들이 올바른 합을 이루기 때문에 이 답은 맞아요.

각 글자는 서로 다른 숫자를 나타내야 하고, 여러 자리 수의 맨 앞자리는 0이 될 수 없어요.

구현

퍼즐 문자열을 받는 Go 함수 Solve 하나를 정의해요. 이 문자열에는 + 연산자가 0개 이상 있을 수 있고 == 연산자는 하나 있어요. Solve는 알파메틱 퍼즐을 풀고, 퍼즐과 덧셈 해법 모두에 대한 모든 문자 치환을 담은 맵을 반환해야 해요.

Solve 함수의 시그니처는 다음과 같아요:

func Solve(puzzle string) (map[string]int, error) {

주어진 퍼즐에 해법이 없으면 Solve는 오류를 반환해야 해요.

퍼즐과 그에 대해 반환되는 해법의 예는 다음과 같아요:

Solve("SEND + MORE == MONEY")

이 경우 다음을 반환해요

map[string]int{"M":1, "O":0, "N":6, "E":5, "Y":2, "S":9, "D":7, "R":8}, nil
  S E N D
  M O R E +
-----------
M O N E Y

이 문자들을 유효한 숫자로 바꾸면 다음과 같아요:

  9 5 6 7
  1 0 8 5 +
-----------
1 0 6 5 2
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Go Exercism

알파메틱스 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Go 트랙을 개념 34개연습 문제 165개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.