[Py_Lv1] 좌석 구매

Sunghun📈·2021년 5월 3일
0

프로그래머스

목록 보기
41/93
post-thumbnail

문제 설명

이 공연장의 표를 구매하기 위해 K명의 관람객이 매표소에 한 줄로 서 있습니다. 이때, 관람객은 자신이 원하는 좌석에서만 공연을 관람하려고 합니다. 각 관람객은 매표소에서 자신이 원하는 좌석의 좌표를 말하고, 아직 아무도 구매하지 않은 좌석이면 해당 좌석의 표를 삽니다. 그러나 만약 이미 구매된 좌석이면 공연 관람을 포기하고 집으로 돌아갑니다. 줄을 서 있는 사람들이 구매하려는 좌석의 좌표가 순서대로 담겨있는 배열 seat가 매개변수로 주어질 때, 표를 구매하는 데 성공한 사람의 수를 return 하도록 solution 함수를 완성해 주세요.

제한 사항

  • 줄을 서 있는 관람객의 수는 1 이상 100,000 이하입니다.
  • seat에는 관람객이 구매하려는 좌석의 좌표가 가장 앞에 있는 사람부터 순서대로 들어있습니다.
  • seat의 각 원소는 관람객이 구매하려는 좌석의 좌표이며, [가로 좌표, 세로 좌표] 순입니다.
  • 가로 좌표, 세로 좌표의 범위는 1 이상 100,000 이하의 정수입니다.

입출력 예

접근법

이 문제의 핵심은 중복된 값을 제거하는 것이다.

가능할것 같은 여러가지 방법이 떠오르면서 문제를 해결하는데 오랜시간
걸리게 만든 문제다.

가장 쉬운 방법은 set()함수의 특성을 이용하는 것이다.

중복값이 허용되지 않는 특성이 있다.

다만, set() 함수를 사용하기 위해서는 리스트 형태에 mutable한 값은
지원하지 않는다.

그래서 좌표를 나타내는 값의 자료형을 변경해주어야 하는데 다행이
tuple형태로 변형하면 set()함수를 정상적으로 이용할 수 있다.

set()함수는 type이 set이기 때문에 list에서 사용 가능함 함수가
바로 적용되지 않는다.

그래서 최종적으로 list()함수를 이용해 list로 변경 후 len()을
적용해야 한다.

머리속으로 떠오르는것을 바로 구현해보지 않고 다른 방법을 찾다가
너무 많은 시간을 보낸것이 반성해야할 점이다.😂

=============================================================

def solution(seat):
    r = set([tuple(i) for i in seat])
    answer = len(list(r))           
    return answer
profile
데이터 분석과 AI 분야의 전문가를 꿈꾸는 청년

0개의 댓글