[Algorithm] ๐ข๋ฐฑ์ค 7785 ํ์ฌ์ ์๋ ์ฌ๋
0. ๋ฌธ์
์๊ทผ์ด๋ ์ธ๊ณ์ ์ธ ์ํํธ์จ์ด ํ์ฌ ๊ธฐ๊ธ์์ ์ผํ๋ค. ์ด ํ์ฌ์ ๊ฐ์ฅ ํฐ ํน์ง์ ์์ ๋ก์ด ์ถํด๊ทผ ์๊ฐ์ด๋ค. ๋ฐ๋ผ์, ์ง์๋ค์ ๋ฐ๋์ 9์๋ถํฐ 6์๊น์ง ํ์ฌ์ ์์ง ์์๋ ๋๋ค.
๊ฐ ์ง์์ ์๊ธฐ๊ฐ ์ํ ๋ ์ถ๊ทผํ ์ ์๊ณ , ์๋ฌด๋๋ ํด๊ทผํ ์ ์๋ค.
์๊ทผ์ด๋ ๋ชจ๋ ์ฌ๋์ ์ถ์ ์นด๋ ์์คํ ์ ๋ก๊ทธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด ๋ก๊ทธ๋ ์ด๋ค ์ฌ๋์ด ํ์ฌ์ ๋ค์ด์๋์ง, ๋๊ฐ๋์ง๊ฐ ๊ธฐ๋ก๋์ด์ ธ ์๋ค. ๋ก๊ทธ๊ฐ ์ฃผ์ด์ก์ ๋, ํ์ฌ ํ์ฌ์ ์๋ ๋ชจ๋ ์ฌ๋์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ก๊ทธ์ ๊ธฐ๋ก๋ ์ถ์ ๊ธฐ๋ก์ ์ n์ด ์ฃผ์ด์ง๋ค. (2 โค n โค 106) ๋ค์ n๊ฐ์ ์ค์๋ ์ถ์ ๊ธฐ๋ก์ด ์์๋๋ก ์ฃผ์ด์ง๋ฉฐ, ๊ฐ ์ฌ๋์ ์ด๋ฆ์ด ์ฃผ์ด์ง๊ณ "enter"๋ "leave"๊ฐ ์ฃผ์ด์ง๋ค. "enter"์ธ ๊ฒฝ์ฐ๋ ์ถ๊ทผ, "leave"์ธ ๊ฒฝ์ฐ๋ ํด๊ทผ์ด๋ค.
ํ์ฌ์๋ ๋๋ช ์ด์ธ์ด ์์ผ๋ฉฐ, ๋์๋ฌธ์๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ์ด๋ฆ์ด๋ค. ์ฌ๋๋ค์ ์ด๋ฆ์ ์ํ๋ฒณ ๋์๋ฌธ์๋ก ๊ตฌ์ฑ๋ 5๊ธ์ ์ดํ์ ๋ฌธ์์ด์ด๋ค.
์ถ๋ ฅ
ํ์ฌ ํ์ฌ์ ์๋ ์ฌ๋์ ์ด๋ฆ์ ์ฌ์ ์์ ์ญ์์ผ๋ก ํ ์ค์ ํ ๋ช ์ฉ ์ถ๋ ฅํ๋ค.
1. ์์ด๋์ด
HashMap ์ด์ฉ
๐ก name์ key๊ฐ์ผ๋ก, (enter, leave)๋ฅผ value๊ฐ์ผ๋ก ์ด์ฉ
๐ก value๊ฐ enter์ธ key ๊ฐ๋ง list์ ์ ์ฅํจ
๐ก list ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ํ๋
2. ํต์ฌ ํ์ด
1) name์ key๊ฐ์ผ๋ก, (enter, leave)๋ฅผ value๊ฐ์ผ๋ก ์ด์ฉ
for (int i = 0; i < n; i++) {
String[] s = br.readLine().split(" ");
if (s[1].equals("enter"))
company.put(s[0], "enter");
else
company.put(s[0], "leave");
}
2) value๊ฐ enter์ธ key ๊ฐ๋ง list์ ์ ์ฅํจ
for (String key : company.keySet()) {
if (company.get(key).equals("enter")) {
list.add(key);
}
}
3) list ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ํ๋
Collections.sort(list);
for(int i=list.size()-1; i>=0; i--)
System.out.println(list.get(i));
3. ์ฝ๋
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.List;
public class Hash_2 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
HashMap<String, String> company = new HashMap<>();
int n = Integer.parseInt(br.readLine());
List<String> list = new ArrayList<String>();
for (int i = 0; i < n; i++) {
String[] s = br.readLine().split(" ");
if (s[1].equals("enter"))
company.put(s[0], "enter");
else
company.put(s[0], "leave");
}
for (String key : company.keySet()) {
if (company.get(key).equals("enter")) {
list.add(key);
}
}
Collections.sort(list);
for(int i=list.size()-1; i>=0; i--)
System.out.println(list.get(i));
}
}
4. ๊ฒฐ๊ณผ
์ฑ๊ณตโจ
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ([Algorithm] ๐ข๋ฐฑ์ค 7785 ํ์ฌ์ ์๋ ์ฌ๋), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@kha0318/Algorithm-๋ฐฑ์ค-7785-ํ์ฌ์-์๋-์ฌ๋์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค