프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
1. players 의 길이가 50000 이하 이므로 시간초과를 고려해야하는 문제
2. HashMap < String , Integer > 을 사용하여 , key에는 선수명 , value 에는 등수를 넣어 key값으로 등수를 찾아오면 시간복잡도를 줄일 수 있음.
3. 위 방법으로 선수의 등수를 찾아 swap 하면 됨.
나의풀이 ( 코드 )
import java.util.*;
class Solution {
public String[] solution(String[] players, String[] callings) {
String[] answer = new String[players.length];
HashMap<String, Integer> hm = new HashMap<>();
for (int i = 0; i < players.length; i++) {
hm.put(players[i], i);
}
for (int i = 0; i < callings.length; i++) {
int back = hm.get(callings[i]);
int front = back - 1;
String str = players[front];
players[front] = players[back];
players[back] = str;
hm.put(players[front], front);
hm.put(players[back], back);
}
for (int i = 0; i < players.length; i++) {
answer[i] = players[i];
}
return answer;
}
}'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스/JAVA 자바] 시소 짝꿍 (0) | 2024.05.02 |
|---|---|
| [프로그래머스/JAVA 자바] 폰켓몬 (0) | 2024.04.25 |
| [프로그래머스/JAVA 자바] 신고 결과 받기 (0) | 2024.04.21 |
| [프로그래머스/JAVA 자바] 성격 유형 검사하기 (2) | 2024.04.19 |
| [프로그래머스/JAVA 자바] 크레인 인형뽑기 게임 (0) | 2024.04.18 |