728x90
반응형
문제
생각
- 2차원 배열 간단 swap 문제라고 생각했지만 경기도 오산이었다.
- 시간초과가 나며 fail..
코드
- 실패했던 코드를 첨부한다.
public class Main {
public static void main(String[] args) {
System.out.println(solution(
new String[]{"mumu", "soe", "poe", "kai", "mine"}
, new String[]{"kai", "kai", "mine", "mine"});
}
public static String[] solution(String[] players, String[] callings) {
String[] answer = {};
// 1. callings를 순회하며
for (int i = 0; i < callings.length; i++) {
String calling = callings[i];
// 2. players 위치를 변경
for (int j = 0; j < players.length; j++) {
if(calling.equals(players[j])) {
String tmp_player = players[j-1];
players[j-1] = players[j];
players[j] = tmp_player;
break;
}
}
}
return players;
}
}
- map 을 활용하라는 힌트를 보고 풀었더니 풀렸다.
import java.util.*;
public class Main {
public static void main(String[] args) {
System.out.println(solution(
new String[]{"mumu", "soe", "poe", "kai", "mine"}
, new String[]{"kai", "kai", "mine", "mine"}));
}
public static String[] solution(String[] players, String[] callings) {
String[] answer = {};
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < players.length; i++) {
map.put(players[i], i+1);
}
for (String calling : callings) {
int idx = map.get(calling); // 제끼는 사람
map.put(players[idx-1], idx-1);
map.put(players[idx-2],map.get(players[idx-2])+1);
String tmp_player = players[idx-1];
players[idx-1] = players[idx-2];
players[idx-2] = tmp_player;
}
return players;
}
}
다른 사람 코드
다른 사람의 코드도 비슷하다.
728x90
반응형
'Dev > Algorithm' 카테고리의 다른 글
[프로그래머스] 공원 산책 - Java (0) | 2024.05.20 |
---|---|
[프로그래머스] 추억 점수 (0) | 2024.05.20 |
[프로그래머스] 데이터 분석 (0) | 2024.05.18 |
[프로그래머스] 이웃한 칸 (0) | 2024.05.18 |
[프로그래머스] 개인정보 수집 유효기간 (0) | 2024.05.17 |