[99클럽 코테스터디 2기][Python/비기너] 25번째 문제: Minimum Number of Moves to Seat Everyone

최민지·2024년 6월 13일
0
post-thumbnail

오늘의 주제도 '그래프'

[Minimum Number of Moves to Seat Everyone]

문제

입력과 출력

코드

class Solution:
    def minMovesToSeat(self, seats: List[int], students: List[int]) -> int:
        seats.sort()
        students.sort()
        sum=0
        for i in range(len(seats)):
            if seats[i]>students[i]:
                sum+=seats[i]-students[i]
            else:
                sum+=students[i]-seats[i]
        return sum

알고리즘

두 리스트 값중 차이가 적게나는 아이들로 빼주기 위해
두 배열을 정렬해준다.
그리고 두 배열의 첫번째 요소부터 고려하며 둘 중 더 큰수에서 작은 수를 빼서 sum에 더해준다
이러한 과정으로 배열을 다 돌고 sum을 반환해준다.


(열심히해보자는 의미에서.. ㅎ)

회고

일단 이번 문제는 빨리 풀었다.
최근 일주일 정도는 문제 풀이 시간이 확 줄었는데, 오늘도 9분을 기록했다..! 최근 10분 안쪽으로 시간이 줄어 뿌듯하다.

그렇지만 시간보다 중요한게 얼마나 잘 풀었냐겠지..!
사실 문제를 정확히 이해하지 못하고 풀었다...
뭔가 글이 많아서 읽어보니 자리를 옮겨준다는 것 같은데 정확히 무슨뜻인지는 모르겠고,,
예시를 보니 자리를 옮길 수 있는 가장 작은 수..? 를 뽑는 것 같아
무작정 코드 작성을 시작해봤다..

간격이 작은 수끼리 빼줘야하니 자주 쓰이는 sort로 정렬을 해줘야겠다 생각했고, 음수가 나오면 안되니 크기를 비교해서 큰것에서 작은 것을 빼주고 이 차이를 다 더하여 반환했다.

테스트케이스가 통과된것을 보고 오 ..? 했는데

진짜됨..
왜?
어쨋든 내가 해석한 내용이 맞았나보다..!!

그래서 미들러 문제도 도전해보겠다..!
(사실 방금 문제 읽어봤는데 벙찜.. 나를 자만하지 말라고 또 이런 기회가 있구나.. 허허 성공할지는 모르겠지만 풀어보고 또 작성하러 오겠다..!)

profile
공부..일기....

0개의 댓글