(프로그래머/레이싱/JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/178871

프로그램 제작자

코드 중심 개발자를 고용하십시오. 스택 기반 위치 일치. 프로그래머를 위한 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.

프로그래머.co.kr

문제 접근

for 문만 사용하면 시간 초과가 발생합니다.

그래서 맵을 사용할까 생각했는데, 맵을 사용할 때 콜드 플레이어의 순위를 올릴 수는 있는데 추월당한 플레이어의 순위를 낮추는 방법이 생각이 안나네요.

나는 고개를 돌려 마침내 돌아서서 찾았다.

맵에서 플레이어의 순위를 플레이어 배열에 대한 인덱스로 사용합니다.

추월당한 선수이름 온도에 저장, 후 추격자바꾸다 호출된 플레이어이름을 넣어 플레이어의 위치 지정아니요

온도(추월당한 선수의 이름)넣어

위치가 변경되었습니다.

import java.util.*;

class Solution {
   public String() solution(String() players, String() callings) {
		
		 Map<String, Integer> playersMap = new HashMap<>();
		 for(int i=0; i<players.length; i++) playersMap.put(players(i), (i+1));
		 
		 for(int i=0; i<callings.length; i++) {
			 String temp = "";
			 temp = players(playersMap.get(callings(i))-2);
			 players(playersMap.get(callings(i))-2) = players(playersMap.get(callings(i))-1);
			 players(playersMap.get(callings(i))-1) = temp;
			 
			 playersMap.put(callings(i), playersMap.get(callings(i))-1);
			 playersMap.put(temp, playersMap.get(temp)+1);
			 
		}
		return players;
	}
}

다른 사람의 솔루션

레벨과 플레이어를 위한 두 개의 맵 생성 및 사용

values()는 맵의 값을 하나씩 검색할 수 있습니다. 키만 가져오기는 keySet()

import java.util.*;

class Solution {
    public String() solution(String() players, String() callings) {
        Map<Integer, String> rank = new HashMap<>();
        Map<String, Integer> player = new HashMap<>();

        for (int i = 0; i < players.length; i++) {
            rank.put(i + 1, players(i)); // 순위 , 이름 hashmap
            player.put(players(i), i + 1); // 이름, 순위 hashmap
        }

        for (String curPlayer : callings) {
            int curRank = player.get(curPlayer); // 현재 플레이어의 순위
            int frontRank = curRank - 1;         // 앞 플레이어의 순위
            String frontPlayer = rank.get(frontRank); //앞 플레이어 이름

            rank.put(frontRank, curPlayer); // 추월할 선수 이름 앞으로
            rank.put(curRank, frontPlayer); // 추월 당한 선수 뒤로
            player.put(frontPlayer, curRank); // 추월 당한 선수 순위 다운
            player.put(curPlayer, frontRank); // 추월한 선수 순위 업
        }

        String() answer = new String(players.length);
        int cnt = 0;
        for(String s : rank.values()){
            answer(cnt++) = s;
        }

        return answer;
    }
}

Similar Posts

  • 경제학과 유형경제학과 무형경제학과

    경제학 경제학 책은 어렵다 복잡하고 읽기가 쉽지 않습니다. 그러나 경제는 삶의 중요한 부분입니다. 경제학 책에서 읽기 쉬운 것을 찾는다. 저는 이 책을 찾았습니다. Henry Hazlitt의 유형 경제학 무형 경제학 이 책은 “A Lesson in Economics” 원작의 번역본입니다. 한국에서는 2020년에 출간되었지만 초판은 1946년에 나왔다고 한다. 오늘날이 책은 독자들에게 사랑 받고 있습니다. 아마존 초장기 베스트셀러입니다. 경제학 입문자에게…

  • 펠트커피(FELT) 클래식 에스프레소

    늘 그렇듯 트위터에서 커피 추천을 보고 구매했습니다. 광화문에도 오프라인 매장이 있다고 합니다.네이버쇼핑에서 원두 구매하기 상품설명은 초콜릿과 아몬드의 적당한(?) 균형잡힌 맛인 것 같습니다. 마시는 느낌 처음 한 모금 마셨을 때 ‘맛있다!’라고 생각했는데 처음으로 ‘어 니트 스탠더드’를 마셨을 때 기분이 어땠나요?전체적으로 고소한 맛(신맛, 쓴맛 없음), 중간 무게. 무언가의 끝에서 다른 맛은 어떻습니까?내가 그랬어나는 약 4잔과 심지어 차가운…

  • 심근경색의 초기 증상을 예방하는 방법

    오늘은 에디터가 심근경색 초기 증상을 예방하는 방법에 대해 알려드리겠습니다. 심근경색은 선진국뿐 아니라 우리나라에서도 가장 흔한 사망원인이다. 심근경색의 초기 증상을 예방하는 방법 발병 직후 환자의 1/3이 병원에 도착하기 전에 사망했습니다. 심근경색이란 관상동맥은 심장에 산소와 영양분을 공급하여 전신에 혈액을 공급하는 기능을 유지합니다. 심근경색증은 관상동맥을 통해 산소와 영양분을 공급받는 심장근육이 관상동맥이 막혀 손상된 상태다. 이러한 혈액 공급 중단은…

  • 스프링클러 시스템의 종류

    I. 개요스프링클러 시스템은 화재를 진압하거나 불을 끄기 위해 충분한 향의 물을 불에 분사하는 시스템입니다.건물 위 또는 벽 위 첨부된 스프링클러 헤드 금속 불 그것이 일어날 때 열에 녹아서 주둥이가 떨어져 나가면서 가압 기존 물은 헤드에서 발화점 전체로 분사됩니다.그와 동시에 화재경보기 화재 예고 소화 활동 동시에 화재 스프링클러는 현대식 건물에 없어서는 안 될 필수 장비로 조기…

  • 점묘법에 대한 생각

    점묘가 정확한 용어인지 확실하지 않습니다. 컷 아웃에 약간의 색상 팝을 추가하여 예쁘게 보이도록 완료했다고 가정 해 봅시다.ㅋ 내가 말하는 모든 것은 래커 기반 페인트를 기반으로 합니다. 아크릴이나 에나멜은 어떻게 되는지 모르겠습니다.거기에 무엇이있을 것인가 이 작은 부분에 밝은 색을 칠하면 아름답게 보일 것입니다. 다만, 문제는 그냥 일반적인 방법으로 뿌리면 절대 나오지 않고, 아마 젖어서 더러워질 것입니다….