Account Login - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
릿트코드를 막 시작하고 둘러보는데 재밌는게 있다. 한 달간 매일 내는 문제를 다 풀면 선물을 준다. 프리미엄 티켓을 사야 풀 수 있는 문제와 그냥 풀 수 있는 문제 두 개를 주는데 프리미엄까지 풀어야 선물을 주는 것 같다. 어쨋든 나처럼 게으른 사람한테는 좋은 목표가 될 것 같다.다만, 하루의 기준이 Pacific Time 즉 미국 서부쪽 시간대라 밤시간에 시작되고 아침시간에 끝난다. 결국 술 한 번 먹으면 탈락이다.
이번 문제는 array(arr) 하나와 array로 구성된 array(pieces)를 제공한다. pieces에 있는 각 element가 arr에 있는지 찾는 것이다. 이 때 pieces에 [4,[1,2,3]]
이 있다면 arr에는 1,2,3
이 연속
으로 있어야한다. 이 부분을 이해하는데 15분이나 걸렸다. 아마 면접 문제였으면 광탈했을듯 (영어도 안되고 코딩도 안되고...)
class Solution:
def canFormArray(self, arr: List[int], pieces: List[List[int]]) -> bool:
for piece in pieces:
if piece[0] not in arr:
return False
l = len(piece)
if l > 1:
start = arr.index(piece[0])
if arr[start:start+l] != piece:
return False
return True
아직 문제가 진행중이라 답은 없다. 런타임도 상위 9%고 메모리 사용도 상위 70%다. 장시간에 걸쳐 문제 이해하고 풀은 것빼면 꽤 괜찮았다. 아, 그게 젤 중요한가...