☑️ 문제(Leetcode): 399. Evaluate Divistion
https://leetcode.com/problems/evaluate-division/description/
☑️ 설계
우선 이 문제의 핵심은 어떻게 "str1 / str2 = x.x"의 값을 구할 수 있냐인데,
a/b = 2.0, b/c = 3.0라고 할 때, a/c의 값은 a/c = (a/b * b/c)로 구할 수 있다.
처음에는 아래 조건을 만족하는 것을 완전 탐색으로 찾으려고 하였다.
(정보를 가지고 있는 값을 num1/num2, num3/num4 그리고 구하고자 하는 값을 answer1 / answer2라고 하겠다.)
- answer1 == num1
- answer2 == num4
- num2 == num3
그런데 문제 유형이 그래프라는 사실을 보고 아래 방식으로 그래프를 그려보았다.
a/b = 2.0를 a -> b (가중치: 2.0)
b/c = 3.0를 b -> c (가중치: 3.0)
그랬더니 a/c의 값은, (a->b의 가중치 * b->c의 가중치) 값과 같다는 사실을 알 수 있었다.
즉, 가중치를 가지고 있는 방향 그래프로 나타낼 수 있다는 사실을 깨달을 수 있었고,
구하고자 하는 값은 x에서 y까지 이동할 수 있는 경로가 있는지 그래프 탐색을 해보고,
탐색했을 때 경로가 있다면, 경로 가중치를 모두 곱한 값이 정답이다.
반대로 경로가 존재하지 않는다면, -1를 출력하면 된다.
이 사실을 가지고 설계를 진행해보았다.
'더보기'에서 설계 내용을 확인할 수 있다.
☑️ 후기
문제가 나한테 난이도가 있고 다른 더 급하게 처리할 일이 있어서, 설계까지만 해보았다🥲
나는 설계보다는 구현력이 아직 부족하다는 걸 느낄 수 있었다.
다른 사람들의 풀이를 참고해보니, 일단 방향성은 맞는 듯 하니 구현 실력을 기르기 위해서 주말에 꼭 연습해보자.
'TIL (Today I Learned)' 카테고리의 다른 글
99클럽 코테 스터디 27일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.17 |
---|---|
99클럽 코테 스터디 26일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.17 |
99클럽 코테 스터디 24일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.14 |
99클럽 코테 스터디 23일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.14 |
99클럽 코테 스터디 22일차 TIL + 오늘의 학습 키워드 (0) | 2024.08.12 |