Coding Planet
level1. ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ Java ๋ณธ๋ฌธ
๋ฐ์ํ
โจ ๋ฌธ์
๐ป์ฝ๋
import java.util.Map;
import java.util.HashMap;
public class Solution {
public String[] solution(String[] players, String[] callings) {
// players ๋ฐฐ์ด ๋ด์์ ํน์ ์ ์์ ํ์ฌ ์์น๋ฅผ ์ฐพ๊ธฐ ์ํ map ์์ฑ
Map<String, Integer> playerPosition = new HashMap<>();
for (int i = 0; i < players.length; i++) {
playerPosition.put(players[i], i);
}
// ๊ฐ calling์ ๋ฐ๋ผ ์ ์๋ค์ ์์น๋ฅผ ๋ณ๊ฒฝ
for (String calling : callings) {
int position = playerPosition.get(calling);
// ์ ์์ ์์น์ ๋ฐ๋ก ์์ ์ ์์ ์์น๋ฅผ swap
swap(players, position, position - 1);
// playerPosition ์
๋ฐ์ดํธ
playerPosition.put(players[position], position);
playerPosition.put(players[position - 1], position - 1);
}
return players;
}
// ๋ฐฐ์ด์ ๋ ์์น์ ์์๋ฅผ swapํ๋ helper ํจ์
private void swap(String[] arr, int i, int j) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
๐ฉ๐ป ํ์ด ๋ฐฉ๋ฒ
- ์ ๋ฌธ์ ๋ ๋ฐฐ์ด๋ง ์ด์ฉํด์ ์ถฉ๋ถํ ํ ์ ์๋ ๋ฌธ์ ์ด๋ค. ๊ทธ๋ฌ๋ ๋ฐฐ์ด์ ์ด์ฉํ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์ํํ๋ฉด์ ์ ์์ ์์น๋ฅผ ์ฐพ์์ผ ํ๋ฏ๋ก ์๊ฐ ๋ณต์ก๋๊ฐ O(n)์ด ๋๋ค. ํ์ง๋ง HashMap์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ ์ ์ด๋ฆ์ด ํค๋ก ๋ค์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ์ฌ์์น๋ฅผ O(1)์ ์๊ฐ ๋ณต์ก๋๋ก ์ฐพ์ ์ ์๊ฒ ๋๋ค.
- ๋ฌธ์ ์ ์กฐ๊ฑด์์ ์ ์ ์๋ ๊ฒ์ฒ๋ผ ( 2 ≤ callings์ ๊ธธ์ด ≤ 1,000,000) callings ๊ธธ์ด๊ฐ ๋งค์ฐ ๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ์ด์ ์ ์ฃผ์ํด์ผํ๋ค.
๐ ๋๋์
- calling์ ๋ฐ๋ผ ์ ์ ์์น๋ฅผ ๋ฐ๊ฟ ๋ swap๋ฉ์๋๋ง ์ฌ์ฉํ๊ณ ๋ค์ HashMap์ ์ ๋ฐ์ดํธํ์ง ์์ ์คํจํ์๋ค...
๋ฐ์ํ
'๐ ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
level1. ์์ ๋ํ๊ธฐ Java (0) | 2023.09.12 |
---|---|
level1. ํฌ๊ธฐ๊ฐ ์์ ๋ถ๋ถ๋ฌธ์์ด Java (Integer.parseInt() ๋ฐํ์ ์ค๋ฅ) (0) | 2023.08.25 |
level1. ์ผ์ด์ฌ Java (0) | 2023.08.24 |
level1. ๊ฐ์ธ์ ๋ณด ์์ง ์ ํจ๊ธฐ๊ฐ Java(2023 KAKAO BLIND RECRUITMENT) (0) | 2023.08.21 |
level1. ์ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๊ธฐ Java (0) | 2023.08.21 |
Comments