[프로그래머스] 달리기 경주

2023. 4. 6. 22:06·PS/프로그래머스
반응형

링크

문제 설명

def solution(players: List[str], callings: List[str]) -> List[str]:
        ...

callings는 players의 원소로만 이루어져 있다. callings의 원소를 players에서 찾아 i - 1 위치의 원소와 순서를 서로 바꿔준다. 모든 callings의 원소에 대해 순서를 바꿔준 결과를 반환하면 된다.

제한사항

  • 5 ≤ players의 길이 ≤ 50,000
    • players[i]는 i번째 선수의 이름을 의미합니다.
    • players의 원소들은 알파벳 소문자로만 이루어져 있습니다.
    • players에는 중복된 값이 들어가 있지 않습니다.
    • 3 ≤ players[i]의 길이 ≤ 10
  • 2 ≤ callings의 길이 ≤ 1,000,000
    • callings는 players의 원소들로만 이루어져 있습니다.
    • 경주 진행중 1등인 선수의 이름은 불리지 않습니다.

풀이

단순히 리스트의 index와 insert함수를 사용할 수도 있지만 callings의 최대 길이가 100만, players의 길이가 5만이기 때문에 최악의 경우 100만 x 5만의 시간이 걸리게 된다. 따라서 선수의 등수를 저장하는 dictionary를 추가적으로 선언해 문제를 풀었다. 이 dictionary의 키는 선수의 이름, 값은 등수로 생성한다. 그러면 선수 이름만으로 players 배열에서의 위치를 바로 알 수 있게된다. index의 시간복잡도가 O(n)인 것을 생각하면 더 빠르게 동작한다.

제출코드

def solution(players: List[str], callings: List[str]) -> List[str]:
    players_dict = {v: i for i, v in enumerate(players)}
    for c in callings:
        i = players_dict[c]
        players[i], players[i - 1] = players[i - 1], players[i]
        players_dict[players[i]] = i
        players_dict[players[i - 1]] = i - 1
    return players
반응형
저작자표시 비영리 변경금지 (새창열림)
'PS/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] 연속된 부분 수열의 합
  • [프로그래머스] 덧칠하기
  • [프로그래머스] 카드뭉치
  • [프로그래머스] 인사고과
덴마크초코우유
덴마크초코우유
IT, 알고리즘, 프로그래밍 언어, 자료구조 등 정리
    반응형
  • 덴마크초코우유
    이것저것끄적
    덴마크초코우유
  • 전체
    오늘
    어제
    • 분류 전체보기 (122)
      • Spring Framework (7)
        • Spring (3)
        • JPA (2)
        • Spring Security (0)
      • Language (51)
        • Java (11)
        • Python (10)
        • JavaScript (5)
        • NUXT (2)
        • C C++ (15)
        • PHP (8)
      • DB (16)
        • MySQL (10)
        • Reids (3)
        • Memcached (2)
      • 개발 (3)
      • 프로젝트 (2)
      • Book (2)
      • PS (15)
        • 기타 (2)
        • 백준 (2)
        • 프로그래머스 (10)
      • 딥러닝 (8)
        • CUDA (0)
        • Pytorch (0)
        • 모델 (0)
        • 컴퓨터 비전 (4)
        • OpenCV (1)
      • 기타 (16)
        • 디자인패턴 (2)
        • UnrealEngine (8)
        • ubuntu (1)
        • node.js (1)
        • 블로그 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Unreal Engine
    select
    언리얼엔진4
    블루프린트
    CPP
    FPS
    PS
    C++
    C
    memcached
    mscoco
    웹
    pytorch
    딥러닝
    redis
    게임
    JavaScript
    Python
    파이썬
    Unreal
    게임 개발
    MySQL
    JS
    자바
    php
    알고리즘
    map
    프로그래머스
    NUXT
    클래스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
덴마크초코우유
[프로그래머스] 달리기 경주
상단으로

티스토리툴바