트랙
/
Common Lisp
Common Lisp
/
연습 문제
/
친척 간의 거리
친척 간의 거리

친척 간의 거리

보통

소개

귀족을 위한 가장 뜨거운 신상 데이팅 앱, Noble Knots를 개발하게 됐어요! 수백 년에 걸친 왕실의 근친혼으로 상황은… 복잡해졌어요. 이런, 우리 쌍둥이였네 같은 상황을 피하려면, 두 사람이 얼마나 가까운 친척인지 확인하는 시스템을 만들어야 해요.

Noble Knots는 아이슬란드의 "Islendinga-App"에서 영감을 받았어요. 이 앱은 아이슬란드 정착 시기부터 이어져 온, 아이슬란드 사람들 사이의 모든 알려진 가족 관계를 추적하는 데이터베이스를 바탕으로 해요. 알고리즘은 왕실 가계도에서 두 사람 사이의 분리 차수를 계산할 거예요.

이 앱이 완벽한 짝에게 왕관을 씌워 줄 수 있을까요?

지침

여러분의 과제는 가계도에서 두 사람 사이의 분리 정도를 구하는 거예요. 이것은 모든 할리우드 배우가 케빈 베이컨과 6단계 이내로 연결되어 있다는 대중문화 속 이야기와 비슷해요.

  • 부모의 이름과 그 자녀들이 담긴 입력이 주어져요.
  • 이름은 모두 고유하고, 자녀에게는 부모가 한 명 또는 두 명일 수도 있어요.
  • 분리 정도는 한 사람에서 다른 사람까지 이어지는 가장 짧은 연결 수로 정의해요.
  • 두 사람이 연결되어 있지 않다면, "알려진 관계 없음"을 나타내는 값을 반환해요. 실제 구현은 테스트 케이스를 참고해요.

예시

다음과 같은 가계도가 주어졌다고 해봐요:

      ┌──────────┐            ┌──────────┐     ┌───────────┐
      │  Helena  │            │  Erdős   ├─────┤  Shusaku  │
      └───┬───┬──┘            └─────┬────┘     └────┬──────┘
      ┌───┘   └───────┐             └───────┬───────┘
┌─────┴────┐     ┌────┴───┐           ┌─────┴────┐
│   Isla   ├─────┤ Tariq  │           │   Kevin  │
└────┬─────┘     └────┬───┘           └──────────┘
     │                │
┌────┴────┐      ┌────┴───┐
│   Uma   │      │ Morphy │
└─────────┘      └────────┘

Tariq와 Uma의 분리 정도는 2예요 (Tariq → Isla → Uma). Isla와 Kevin 사이에는 알려진 관계가 없어요. 주어진 데이터에 연결이 없기 때문이에요. Uma와 Isla의 분리 정도는 1이에요.

Note

Isla와 Tariq는 형제이고, 분리 정도가 1이에요. 마찬가지로 이 구현은 여러분과 아버지의 형제 사이의 분리 정도를 2로 보고할 거예요.


출처

vaeng링크가 새 창이나 탭에서 열려요
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Common Lisp Exercism

친척 간의 거리 문제를 시작해 볼 준비가 됐나요?

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