문제 링크: https://leetcode.com/problems/merge-triplets-to-form-target-triplet/description/
파이썬 소스: https://bit.ly/3TcXcQy
Triplet, 즉 3개의 원소를 가지는 리스트에 처음부터 너무 관심을 두면 풀기 어려운 문제입니다.
간단하게 triplet의 첫번째 원소만 생각해 보겠습니다.
Example 1번을 보면, 3개의 triplet이 입력으로 주어집니다. 3개 모두 0번째 원소만 뽑아 보겠습니다. 2, 1, 1 입니다. Max(2, 1, 1)을 해보면, target[0] 과 같습니다.
즉, 3개의 원소, 2, 1, 1 모두 target[0] 보다 작거나 같기 때문에, merge할 수 있습니다.
즉, target[x] 보다 크다면, merge 할 수 없으므로, 아래와 같이 비교 할 수 있습니다.
if not (t[0] > target[0] or t[1] > target[1] or t[2] > target[2]): |
t 는 입력으로 주어지는 triplet 리스트 입니다. Triplet의 한 원소라도, target 보다 크다면 merge 할 수 없습니다.
전체 코드는 아래와 같습니다. 마지막에 return 을 할 때, target의 각 원소가, dt0~2에 모두 있는지 and로 확인합니다. dt0에는 target[0] 보다 작거나 같은 원소가 들어 있습니다. Target[0]가 dt0 안에 포함되어 있다면, 첫번째 자리는 target[0] 값이 될 수 있습니다.
이와 같이 두번째, 세번째 자리까지 and로 검사하면, 이문제의 답을 구할 수 있습니디.
코데풀 유튜브 구독 부탁드립니다.
https://www.youtube.com/@codapul
from typing import List
|
댓글 없음:
댓글 쓰기