๐ก 0 ~ n-1 ๋ฒ -> n ์ค 3๋ช
ํ์ ์ ๋ฐ
์ฐธ์ฌ ๊ฐ๋ฅ ํ! ํ์ ์ค ๋ฑ์๊ฐ ๋์ 3๋ช
๋ฑ์ ๋์ 3๋ช
a,b,c 10000xa + 100x b + 100x c
1) ์ ๋ ฌํด์ ๋งค์นญํ๊ธฐ => rank - attendance ์ธ๋ฑ์ค ๊ฐ ๋ง๋ค ๋งค์น๋๊ธฐ๋๋ฌธ์ rank ๋ง ์ ๋ ฌํด์ฃผ๋ฉด ์๋จ
2) 2์ฐจ์ ๋ฐฐ์ด์ ํตํด์ ํ์ด๋ณผ๊น?? ์ถ์๋๋ฐ ์คํจํ๊ณ ....ใ ใ
โญhashMap ์ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ค!!
์ฝ๋ ๋ฆฌ๋ทฐ !!
1. ํด์ฌ๋งต์ rank ๊ฐ / ์ธ๋ฑ์ค ๊ฐ (๋ฑ์) ๋ฅผ ๋ฃ์ด์ค๋ค.
2. map ์ list๋ก ๋ง๋ค์ด์ map์ ํค๋ง ๋ฐํํ๋ค.
3. ํค ๊ฐ๋ง ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ์ํจ๋ค.
4. ํค ๊ฐ๋ค ์ค 012 (3๋ฑ๊น์ง) ๊ฐ์ ๊ฐ์ ธ์ค๊ณ ์ฐ์ฐํด์ฃผ๋ฉด ๋
๐ฌ HashMap :: ํค(Key)์ ๊ฐ(Value)์ ์์ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ ํด๋์ค
๐ฌ put(key, value): ์ง์ ๋ ํค์ ๊ฐ์ ์์ ๋งต์ ์ถ๊ฐํ๊ฑฐ๋, ํด๋น ํค์ ๊ฐ์ด ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด ์ ๊ฐ์ผ๋ก ๋์ฒดํฉ๋๋ค.
๐ฌ map.keySet() : ๋งต(map)์ ํค(key) ์งํฉ์ ๋ฐํํฉ๋๋ค.
๐ฌ new ArrayList<>(map.keySet()) : ์ด ํค(key) ์งํฉ์ ArrayList์ ๋ณต์ฌํ์ฌ ์๋ก์ด ๋ฆฌ์คํธ๋ฅผ ์์ฑํฉ๋๋ค.
๐ฌ Collections.sort(keySet) : ArrayList์ ์ ์ฅ๋ ์์๋ค์ ์ ๋ ฌ
import java.util.*;
class Solution {
public int solution(int[] rank, boolean[] attendance) {
int ans = 0, cnt = 0, r = 1;
int[] abc = new int[3];
HashMap<Integer,Integer> m = new HashMap<>();
for(int i=0 ; i<rank.length ; i++)
m.put(rank[i],i);
while(cnt<3){ // 3๋ฑ๊น์ง ์ถ์ถํ๋ฉด stop
if(attendance[m.get(r)]) //r์ ํด๋นํ๋ ๊ฐ์ด true์ด๋ฉด
abc[cnt++] = m.get(r); // ์๋ก์ด ๋ฐฐ์ด์ r ๋ฑ์ ์ถ๋ ฅ
r++; // ํค๊ฐ ์ฆ๊ฐ์ํค๋ฉด์ cnt 3 ๋ ๋๊น์ง ๊ฐ ์ฐพ๊ธฐ
}
return abc[0]*10000 + abc[1]*100 + abc[2];
}
}
import java.util.*;
class Solution {
public int solution(int[] rank, boolean[] attendance) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < rank.length; i++){
if (attendance[i]){
map.put(rank[i],i); //rank๊ฐ๊ณผ ์ธ๋ฑ์ค ๋ฒํธ (๋ฑ์)
}
}
List<Integer> keySet = new ArrayList<>(map.keySet());
Collections.sort(keySet);
int a = map.get(keySet.get(0));
int b = map.get(keySet.get(1));
int c = map.get(keySet.get(2));
return 10000*a+100*b+c;
}
}