๐ช๐ป programmers Lv1(24.11.14 -3๋ฌธ์ )
65) ์คํจ์จ
HashMap ์ฌ์ฉํด์ Key ๊ฐ์๋ ์คํ ์ด์ง ๋ฒํธ, value ๊ฐ์ ์คํจ์จ ๋ฃ๊ธฐ
value ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๊ณ key ๊ฐ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฃ์ด๋ณด๊ธฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.util.*;
class Solution {
public int[] solution(int N, int[] stages) {
int[] answer = new int[N];
double[] fail = new double[N];
Map<Integer, Double> map = new HashMap<>();
for(int i=1;i<=N;i++)
{
double failureLate = 0; //์คํจ์จ
double failCnt = 0; // ์คํจํ ํ๋ ์ด์ด ์
double sucCnt = 0; // ๋๋ฌํ ํ๋ ์ด์ด ์
for(int j=0;j<stages.length;j++)
{
if(stages[j]==i)
{
failCnt++; //ํด๋ฆฌ์ดํ์ง ๋ชปํ ํ๋ ์ด์ด ์
}
if(stages[j]>=i)
{
sucCnt++; // ์คํ
์ด์ง์ ๋๋ฌํ ํ๋ ์ด์ด ์
}
}
map.put(i, failCnt/sucCnt);
if(failCnt == 0 && sucCnt == 0)
map.put(i,0.0);
}
List<Integer> list = new ArrayList<>(map.keySet());
list.sort((o1, o2)-> map.get(o2).compareTo(map.get(o1)));
for(int i=0;i<N;i++)
{
answer[i] = list.get(i);
}
return answer;
}
}
Map<Integer, Double> map = new HashMap<>();
์ HashMap<Integer, Double> map = new HashMap<>();
์ฐจ์ด๋ ๋ณ์ ์ ์ธ ์ ์ฌ์ฉํ๋ ์ฐธ์กฐ ํ์
์ ์๋ค.
Map
์ HashMap
์ ์ธํฐํ์ด์ค๋ก Map
ํ์
์ผ๋ก ์ ์ธํ๋ ๊ฒฝ์ฐ, ์ดํ์ ์ฝ๋์์ HashMap ์ธ์ ๋ค๋ฅธ Map ๊ตฌํ์ฒด(TreeMap, LinkedHashMap ๋ฑ)๋ก ์ฝ๊ฒ ๊ต์ฒดํ ์ ์๋ค.
Map
์ธํฐํ์ด์ค๋ก ์ ์ธํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ๊ถ์ฅ๋๋ค. ์ธํฐํ์ด์ค ํ์ ์ผ๋ก ์ ์ธํ๋ฉด ์ฝ๋๊ฐ ๋ ์ ์ฐํ๊ณ ํ์ฅ์ฑ์ด ์ข๋ค.๋ง์ฝ
HashMap
์ ํน์ ๊ธฐ๋ฅ์ ์์กดํ๋ ์ฝ๋๋ฅผ ์์ฑํ ๋๋HashMap
ํ์ ์ผ๋ก ์ ์ธํด๋ ๊ด์ฐฎ๋ค.
List<Integer> list = new ArrayList<>(map.keySet());
์ฝ๋๋ ํค๋ค์ ์งํฉ(Set)์ ๋ฆฌ์คํธ(ArrayList)๋ก ๋ณํํด์ ํค๋ค์ ๋ฆฌ์คํธ ํํ๋ก ์ ์ฅํ๊ฒ ๋๋ค.
list.sort((o1, o2) -> map.get(o2).compareTo(map.get(o1)));
๋ ๋ด๋ฆผ์ฐจ์์ ๋ํ๋ธ๋ค.
list.sort((o1, o2) -> map.get(o1).compareTo(map.get(o2)));
๋ ์ค๋ฆ์ฐจ์์ ๋ํ๋ธ๋ค.
HashMap
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ํค(Key), ๋ฐธ๋ฅ(Value)๊ฐ ์ง์ ์ด๋ฃจ์ด ์ ์ฅ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋๋ ํค(Key)
๊ฐ์ผ๋ก ํด์ํจ์๋ฅผ ์คํํ ๊ฒฐ๊ณผ๋ฅผ ํตํด ์ ์ฅ ์์น๋ฅผ ๊ฒฐ์ ํ๋ค.
๋ฐ๋ผ์ HashMap
์ ํน์ ๋ฐ์ดํฐ์ ์ ์ฅ ์์น๋ฅผ ํด์ ํจ์๋ฅผ ํตํด ๋ฐ๋ก ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์ถ๊ฐ, ์ญ์ , ํนํ ๊ฒ์์ด ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค.
๋๋ฌธ์ HashMap
์ ํค(Key) ๊ฐ์ ํตํด์๋ง ๊ฒ์์ด ๊ฐ๋ฅํ๋ฉฐ ํค(key) ๊ฐ์ ์ค๋ณต๋ ์ ์๊ณ ๋ฐธ๋ฅ(value) ๊ฐ์ ํค(key) ๊ฐ์ด ๋ค๋ฅด๋ฉด ์ค๋ณต์ด ๊ฐ๋ฅํ๋ค.
- ์ ์ธ
1
HashMap<Integer> map = new HashMap<>();
- ๊ฐ ์ถ๊ฐ
1
2
map.put(1,"๋ง๋ฃจ");
map.put(2,"๋์ ");
- ๊ฐ ์ญ์
1
2
map.remove(1); // key ๊ฐ 1 ์ ๊ฑฐ
map.clear(); // ๋ชจ๋ ๊ฐ ์ ๊ฑฐ
- ๊ฐ ์ถ๋ ฅ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
System.out.println(map.get(2)); // ๋์
//entrySet() ํ์ฉ
for (Entry<Integer, String> entry : map.entrySet()) {
System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}
//KeySet() ํ์ฉ
for(Integer i : map.keySet()){ //์ ์ฅ๋ key๊ฐ ํ์ธ
System.out.println("[Key]:" + i + " [Value]:" + map.get(i));
}
//keySet().iterator()
Iterator<Integer> keys = map.keySet().iterator();
while(keys.hasNext()){
int key = keys.next();
System.out.println("[Key]:" + key + " [Value]:" + map.get(key));
}
entrySet()์ key์ value ๋ชจ๋๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉํ๊ณ keySet()์ key ๊ฐ๋ง ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ Iterator()
๋ฅผ ์ฌ์ฉํด๋ ๋๋ค.
66) [PCCE ๊ธฐ์ถ๋ฌธ์ ] 9๋ฒ / ์งํ ์ ๊ธฐ
- ์งํ๋ฅผ ์ ์ ํ์๋ฅผ ์ ์ฅํ ์ ์ ๋ณ์ answer๋ฅผ ๋ง๋ค๊ณ 0์ ์ ์ฅํฉ๋๋ค.
- ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด bill์ ์์ ๊ฐ์ด wallet์ ์์ ๊ฐ ๋ณด๋ค ํฌ๊ฑฐ๋ bill์ ํฐ ๊ฐ์ด wallet์ ํฐ ๊ฐ ๋ณด๋ค ํฐ ๋์ ์๋ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค. 2-1. bill[0]์ด bill[1]๋ณด๋ค ํฌ๋ค๋ฉด bill[0]์ 2๋ก ๋๋๊ณ ๋๋จธ์ง๋ ๋ฒ๋ฆฝ๋๋ค. 2-2. ๊ทธ๋ ์ง ์๋ค๋ฉด bill[1]์ 2๋ก ๋๋๊ณ ๋๋จธ์ง๋ ๋ฒ๋ฆฝ๋๋ค. 2-3. answer์ 1 ์ฆ๊ฐ์ํต๋๋ค.
- answer์ returnํฉ๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.*;
class Solution {
public int solution(int[] wallet, int[] bill) {
int answer = 0;
Arrays.sort(wallet);
Arrays.sort(bill);
while(!fit(wallet, bill))
{
if(bill[0]>bill[1])
{
bill[0]/=2;
}
else{
bill[1]/=2;
}
Arrays.sort(bill);
answer++;
}
return answer;
}
public static boolean fit(int[] wallet, int[] bill)
{
return (bill[0]<=wallet[0] && bill[1] <=wallet[1]);
}
}
67) ๋คํธ ๊ฒ์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import java.util.*;
class Solution {
public int solution(String dartResult) {
int answer = 0;
int[] arr = new int[3];
int idx = 0;
String s = "";
for(int i=0;i<dartResult.length();i++)
{
switch(dartResult.charAt(i))
{
case '*':
arr[idx-1]*=2;
if(idx>1)
{
arr[idx-2]*=2;
}
break;
case '#':
arr[idx-1]*=-1;
break;
case 'S':
arr[idx] = (int)Math.pow(Integer.parseInt(s),1);
idx++;
s = "";
break;
case 'D':
arr[idx] = (int)Math.pow(Integer.parseInt(s),2);
idx++;
s = "";
break;
case 'T':
arr[idx] = (int)Math.pow(Integer.parseInt(s),3);
idx++;
s = "";
break;
default:
s+=String.valueOf(dartResult.charAt(i));
break;
}
}
for(int i=0;i<arr.length;i++)
{
answer+=arr[i];
}
return answer;
}
}