[JS] 달리기 경주

2023. 6. 30. 00:36·코딩테스트

문제 소개

프로그래머스 코딩테스트 연습 : [Level 1] 달리기 경주

 

 

자료구조/알고리즘, 시간복잡도, 소요시간

  • 자료구조/알고리즘: Hash
  • 시간 복잡도: O(n)
  • 소요 시간: 45분

 

 

코드

function solution(players, callings) {
    let playersDict = {}
    let playersRankDict = {}
    
    players.forEach((player, index) => {
        playersDict[player] = index;
        playersRankDict[index] = player;
    })
    
    callings.forEach((calling) => {
        let rankupPlayer = calling;
        let rankupPlayerRank = playersDict[calling];
        let rankdownPlayerRank = rankupPlayerRank - 1;
        let rankdownPlayer = playersRankDict[rankdownPlayerRank];
        
        playersDict[rankupPlayer] = rankupPlayerRank - 1;
        playersDict[rankdownPlayer] = rankdownPlayerRank + 1;
        playersRankDict[rankupPlayerRank] = rankdownPlayer;
        playersRankDict[rankdownPlayerRank] = rankupPlayer;
    })
    
    return Object.values(playersRankDict)
}

 

 

회고

문제를 처음 접했을 때는 calling.forEach(() => {indexOf}) 를 활용한 O(N^2)의 알고리즘을 구현했다.

Level 1이라서 쉽게 본것도 있었고 보자마자 해당 알고리즘이 바로 떠올랐지만, 4개의 케이스에서 시간 초과로 해결하지 못했다.

그때부터 짧게 고민할 수 있었던 문제에 대해 많은 시간을 소모한 것 같아서 아쉬웠다.

 

놓친 개념

배열보다 해시(객체)가 탐색, 수정, 삽입 연산이 훨씬 빠르다!! (알고 있었는데,, 첫 알고리즘이 틀리니까 많이 헤매었던 것 같다)

저작자표시 변경금지

'코딩테스트' 카테고리의 다른 글

[JS] 명예의 전당 (1)  (0) 2024.04.29
[JS] 문자열 나누기  (0) 2024.04.29
[SQL] 조건에 부합하는 중고거래 댓글 조회하기  (0) 2023.09.04
코딩 테스트 문제 해결 접근법  (0) 2023.07.02
[JS] 추억 점수  (0) 2023.07.01
'코딩테스트' 카테고리의 다른 글
  • [JS] 문자열 나누기
  • [SQL] 조건에 부합하는 중고거래 댓글 조회하기
  • 코딩 테스트 문제 해결 접근법
  • [JS] 추억 점수
설탕시럽
설탕시럽
설탕시럽의 Web Tech Blog 입니다.
  • 설탕시럽
    SugarSyrup Tech Blog
    설탕시럽
  • 전체
    오늘
    어제
    • 분류 전체보기 (45)
      • HTML & CSS (2)
      • JavaScript (6)
      • React (15)
      • BackEnd (1)
      • 회고 (5)
        • 엄브렐라 개발일지 (1)
        • 인턴 회고!!! (2)
      • 컴퓨터 기초 (1)
        • 운영체제 (2)
        • SICP (1)
      • 코딩테스트 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프론트엔드
    SQL
    인턴
    회고
    usenavigationtype
    코딩테스트
    php
    운영체제
    html-react-parser
    리액트
    popstate
    Element
    타입스크립트
    EC2
    자바스크립트
    AWS
    TypeScript
    docker
    css
    JS
    프로그래머스
    배포
    React
    오블완
    티스토리챌린지
    CodingTest
    nginx
    level1
    document
    JavaScript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
설탕시럽
[JS] 달리기 경주
상단으로

티스토리툴바