์ฝ๋ฉ ํ ์คํธ๋ฅผ ์ค๋นํ๋ฉฐ ๋ฐฑ์ค์ ํ๊ณ ์์์ต๋๋ค.
https://www.acmicpc.net/problem/1920
1920๋ฒ: ์ ์ฐพ๊ธฐ
์ฒซ์งธ ์ค์ ์์ฐ์ N(1 ≤ N ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ N๊ฐ์ ์ ์ A[1], A[2], …, A[N]์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ M(1 ≤ M ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ M๊ฐ์ ์๋ค์ด ์ฃผ์ด์ง๋๋ฐ, ์ด ์๋ค
www.acmicpc.net
๋ฐ๋ก ์ด ๋ฌธ์ ์ธ๋ฐ์?
์๊ฐ๋ณด๋ค ๊ฐ๋จํ ๋ฌธ์ ์ด๊ณ ์ฝ๊ฒ ํ์๋๋ฐ, ๊ณ์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ์์ต๋๋ค..
์์ธ์ด ๋ฌด์์ธ๊ณ , ํ๊ณ ๋ดค์ต๋๋ค.
์ฒซ ๋ฒ์งธ ๋ฌธ์
์ ๋ ฅํ ์ซ์ ๋งํผ ์ ์๋ฅผ ๋ฐ์์ ์๋ฃ๊ตฌ์กฐ์ ์ ์ฅํ๊ณ contains๋ก ๋น๊ตํ ์๊ฐ์ด์์ต๋๋ค.
๋น์ฐํ ์ ์์ด๋ฏ๋ก Integer๋ก ์ ๋ค๋ฆญ์ ์ ์ธํ๋๋ฐ, ์ด๊ฒ ๋ณํ๊ณผ์ ์์ ์๊ฐ์ ์ข ์ก์๋จน์ ์ ์๋ค๋ ์๊ฐ์ ๋ชปํ๋ค์ ใ ใ
StringTokenizer st;
List<Integer> numbers = new ArrayList<>();
// String์ ์
๋ ฅ ๊ฐ์ผ๋ก ๋ฃ๊ธฐ ๋๋ฌธ์,
int N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
String token = st.nextToken();
numbers.add(Integer.parseInt(token)); // ์ฌ๊ธฐ์ ํ๋ฒ Wrapping์ ํด์ค์ผ ํ๋๋ฐ, ์๊ฐ์ด ๊ฑธ๋ฆผ.
}
๋ ๋ฒ์งธ ๋ฌธ์
๋จ์ํ List ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํด์ contains ๋น๊ต๋ฅผ ํ ์๊ฐ์ด์๋๋ฐ, ์ด๊ฒ ํ๊ทผ์ด์์ต๋๋ค.
List์ Set์ ์ฐจ์ด๋ ์์๊ฐ ๋ณด์ฅ๋๋, ์ค๋ณต ํ์ฉ์ด๋ ์ฐจ์ด์ธ๋ฐ ๊ฒฐ์ ์ ์ผ๋ก ์์๊ฐ ์ค์ํ ๊ฒ์ด ์๋ ์ค๋ณต์ ํ์ฉํ์ง ์๋ ๊ฒ ๋ฌธ์ ์ ์ ๋ ฅ์ ๋๋ค.
๋ Collection์ contains()๋ List Set ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(n), O(1) ์ด๋ฏ๋ก ๋ฐ์ดํฐ๊ฐ ๋ง์์ง ์๋ก ์์ฒญ๋ ์๋ ์ฐจ์ด๊ฐ ๋๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
์ด ์ ์ ์ ์์งํ๊ณ ๋ค์ ๋ฌธ์ ๋ค์ ๋ง์ฃผํด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํ์ต๋๋ค.
List<String> numbers2 = new ArrayList<>(); // ์ด๊ฒ์
Set<String> numbers1 = new HashSet<>(); // ์ด๊ฒ์ผ๋ก
'๐ Algorithm > ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2022.07.07 [Lv.2 ๊ดํธ ๋ณํ] (0) | 2022.07.07 |
---|---|
2022.06.27 ใLV.2 ํ๋ ธ์ด์ ํใ (0) | 2022.06.27 |
2022.06.22 ใLv.2 Jadan Caseใ (0) | 2022.06.22 |
2022.06.22 ใLv.2 N-Queenใ (0) | 2022.06.22 |
2022.06.15 ใLv.2 ์คํ์ฑํ ๋ฐฉใ (0) | 2022.06.15 |