-
TIL-2024.04.03 - 코테연습 - 달리기 연습(1).programmers> 기초/코테 연습 2024. 4. 3. 21:54
URL:
https://school.programmers.co.kr/learn/courses/30/lessons/178871
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내가 쓴 코드:
//1. 시간 초과 코드 function solution(players, callings) { var answer = []; callings.forEach((v)=>{ const playerIdx = players.indexOf(v) const swap = players[playerIdx] players[playerIdx] = players[playerIdx-1] players[playerIdx-1] = swap }) return players; }
남이 쓴 코드:
// URL > https://school.programmers.co.kr/learn/courses/30/lessons/178871 const solution = (players, callings) => { // 각 플레이어와 랭크를 저장할 빈 객체들 생성 const keyPlayers = {} // 플레이어를 키로, 랭크를 값으로 저장 const keyRanks = {} // 랭크를 키로, 플레이어를 값으로 저장 // 플레이어 배열을 순회하며 각 플레이어의 랭크를 할당 players.forEach((player,idx)=>{ const rank = idx+1 // 랭크는 플레이어 배열의 인덱스 + 1로 할당 keyPlayers[player] = rank // 플레이어와 랭크를 keyPlayers 객체에 저장 keyRanks[rank] = player // 랭크와 플레이어를 keyRanks 객체에 저장 }) // 각 콜링에 대해 순회 callings.forEach(calling => { // 이전 플레이어를 찾아서 저장 const losePlayer = keyRanks[keyPlayers[calling]-1] // 이전 플레이어를 현재 콜링의 랭크에 대응하는 플레이어로 설정 keyRanks[keyPlayers[calling]] = losePlayer // 현재 콜링의 랭크에 대응하는 플레이어를 현재 콜링으로 설정 keyRanks[keyPlayers[losePlayer]] = calling // 각 단계에서 플레이어들의 랭크를 업데이트 keyPlayers[calling] -= 1 // 현재 콜링의 랭크 감소 keyPlayers[losePlayer] += 1 // 이전 플레이어의 랭크 증가 }) // 최종 결과인 플레이어 배열 반환 return Object.values(keyRanks) }; console.log("result:: ", solution([ "mumu", "soe", "poe", "kai", "mine" ], [ "kai", "kai", "mine", "mine" ])); // ["mumu", "kai", "mine", "soe", "poe"]
'> 기초 > 코테 연습' 카테고리의 다른 글
TIL-2024.04.05 - 코테연습 - 햄버거 만들기(1) & 문자열 나누기(1).programmers (0) 2024.04.05 TIL-2024.04.04 - 코테연습 - 공원 산책(1).programmers (0) 2024.04.04 TIL-2024.04.02 - 코테연습 - 바탕화면 정리(1).programmers (0) 2024.04.03 TIL-2024.03.31 - 코테연습 - kakao -압축(2).programmers (0) 2024.03.31 TIL-2024.03.30 - 코테연습 - kakao -뉴스 클러스터링(2).programmers (0) 2024.03.31