2021년 7월 18일 일요일

Leetcode Weekly Context #250 회고

 Leetcode Weekly Context #250 회고

Leetcode Weekly Context #250 관련된 코드 리뷰 및 회고 내용입니다.

오늘은 요새 자꾸 회사에서도 개발보다는 
기술 검토 및 아키텍쳐 설계를 담당하고 있고, 
내 자신도 코로나 때문인지 밖에 잘 못나가서 그런지 답답한 감이 생겨서 오랜만에 leetcode Weekly Context를 간단하게 해볼까 합니다. 
아마 다 풀지는 못할텐데, 
일단 풀수 있는 만큼 만 풀고 나서 그것에 대한 회고 및 코드를 적을 까 합니다.  
그리고 이걸 하는 이유는 점점 그날이 다가 오고 있기 때문이기도 하구요.

leetcode Weekly Context

이건 leetcode 에서 매 주마다 4개의 알고리즘 문제를 출제하고 주어진 시간안에 누가 빠른 시간안에 푸는지를 경쟁하는 프로그램입니다.
원래 대로 라면 9시30분에 아침 운동 끝나고 나서 씻고 10시부터 12시까지 두시간 동안 진행해야 하는게 맞는데, 늦게 일어나는 바람에 남은 시간이 30분 밖에 없었네요. 30분 동안 2문제는
 pass하고 나머지 한 문제는 풀었는데,  optimized 가 안되어있어서 Time limit이 걸렸네요. 
이제 문제에 대해 설명 드리고, 어떻게 풀었는지 코드 및 설명 적도록 하겠습니다.

1935. Maximum Number of Words You Can Type

이건 text, brokenLetters 가 주워지면 text 의 letter 별로 brokenLetters가 포함되어있지 않은 letter에 대한 갯수를 리턴하는 문제입니다.
저는 간단하게 brokenLetters, letter를 set으로 만들고 둘 사이에 intersection 이 없으면 count ++ 를 하는 형태로 코드 구현하였습니다. 코드는 python으로 구현하였습니다. c++이나 자바가 더 빠르다고 하는데, 해당 언어에 대해서는 익숙하거나 그렇지 않아서요. 아마 담번부턴 golang이나 자바로 코드 짜는 연습을 해야할것 같네요.

5814. Add Minimum Number of Rungs

두번째 문제는 rungs와 dist가 주워지고나서 0에서 시작해서 끝에 있는 rungs에 도달하기 까지에 필요한 추가 가로대 갯수를 리턴하는 문제입니다.
이것의 경우는 처음에 greedy하게 0부터 시작에서 n까지 가면서, 만약 다음단계로 갈수 있으면 패스하고 아님 새로운걸 추가하는 방식으로 코드를 구현하였습니다.

근데 이 경우에 Timelimit 에러가 발생해서 greedy 한방식 말고,  나와 내 이전 가로대 사이의 차이가 dist보다 클 경우, rungs[i] -rungs[i -1]  // dist 갯수 만큼 추가해 주는걸로 코드 수정하였습니다. 그래서 O(1)로 코드 줄어서 통과하였습니다.

5815. Maximum Number of Points with Cost

이건 row당 한개씩 골라서 나올수 있는 최대 값을 리턴하는 방식.
이 경우 dp를 사용해서 dp[i][j] = max(dp[i][j], points[i][j] + dp[i-i][for 0...n] - abs(j - for 0...n)

5816. Maximum Genetic Difference Query

댓글 없음:

댓글 쓰기