2023. 10. 17. 21:49ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1220
-> ์ด์ ๋ฌธ์ ํ์ด
2. ๊ณตํต ์์ ๊ตฌํ๊ธฐ
์ค๋ช
A, B ๋ ๊ฐ์ ์งํฉ์ด ์ฃผ์ด์ง๋ฉด ๋ ์งํฉ์ ๊ณตํต ์์๋ฅผ ์ถ์ถํ์ฌ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์งํฉ A์ ํฌ๊ธฐ N(1<=N<=30,000)์ด ์ฃผ์ด์ง๋๋ค.
๋ ๋ฒ์งธ ์ค์ N๊ฐ์ ์์๊ฐ ์ฃผ์ด์ง๋๋ค. ์์๊ฐ ์ค๋ณต๋์ด ์ฃผ์ด์ง์ง ์์ต๋๋ค.
์ธ ๋ฒ์งธ ์ค์ ์งํฉ B์ ํฌ๊ธฐ M(1<=M<=30,000)์ด ์ฃผ์ด์ง๋๋ค.
๋ค ๋ฒ์งธ ์ค์ M๊ฐ์ ์์๊ฐ ์ฃผ์ด์ง๋๋ค. ์์๊ฐ ์ค๋ณต๋์ด ์ฃผ์ด์ง์ง ์์ต๋๋ค.
๊ฐ ์งํฉ์ ์์๋ 1,000,000,000์ดํ์ ์์ฐ์์ ๋๋ค.
์ถ๋ ฅ
๋ ์งํฉ์ ๊ณตํต์์๋ฅผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ์ฌ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ 1
5
1 3 9 5 2
5
3 2 5 7 8
์์ ์ถ๋ ฅ 1
2 3 5
๋ฌธ์ ํ์ด 1
public ArrayList<Integer> solution2(int n, int[] A, int m, int[] B) {
ArrayList<Integer> result = new ArrayList<>();
Arrays.sort(A);
Arrays.sort(B);
for (int i : A) {
for (int i1 : B) {
if (i == i1){
result.add(i);
break;
}
}
}
return result;
}
๐ฉ๐ป๐ป : ๋จผ์ ๋ฐฐ์ด 2๊ฐ๋ฅผ ์ค๋ฆ ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ค ๋ค์, ์ด์ค for๋ฌธ์ ๋๋ฉด์ ๊ฐ์ ๊ฐ์ result ๋ฆฌ์คํธ์ add ํ๋๋ก ํ๋๋ฐ,, ์ด๋ ๊ฒ ํ๋ฉด
์๊ฐ ์ ํ์์ ๊ฑธ๋ฆฐ๋ค,, ๋ณด๋๊น ์ด์ค for ๋ฌธ์ ๋๋ฉด ์๊ฐ ์ด๊ณผํ๋ ๊ฒ ๊ฐ๋ค,,,
๋ฌธ์ ํ์ด 2
public ArrayList<Integer> solution(int n, int[] A, int m, int[] B) {
ArrayList<Integer> result = new ArrayList<>();
Arrays.sort(A);
Arrays.sort(B);
int p1 = 0, p2 = 0;
while (p1 < n && p2 < m) {
if (A[p1] == B[p2]) {
result.add(A[p1++]);
p2++;
} else if (A[p1] < B[p2]) {
p1++;
}else {
p2++;
}
}
return result;
}
๐ฉ๐ป๐ป : ๊ทธ๋์ ์ ๋ฒ ํ์ด์์ ๋ดค๋ p1, p2 ๋ณ์๋ฅผ ๋ง๋ค๊ณ , p1 ๊ณผ p2 ๋ ์ค ํ๋๋ผ๋ n, m ํฌ๊ธฐ๋ฅผ ๋์ด๊ฐ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๋๋ก ํ๋ค.
๋จผ์ A[p1]๊ณผ B[p2] ๊ฐ ๊ฐ์ผ๋ฉด result ๋ฆฌ์คํธ์ add ํด์ฃผ๊ณ , ๊ทธ ๋ค์ p1, p2 ๊ฐ์ ๊ฐ๊ฐ +1์ฉ ์ฆ๊ฐํด์ค๋ค.
๋ง์ฝ ๊ฐ์ง ์์๋ฐ A[p1]์ด B[p2]๋ณด๋ค ์์ผ๋ฉด p1์ ๊ฐ์ 1 ์ฆ๊ฐ ํด์ฃผ๊ณ , ๊ทธ ๋ฐ๋์ผ ๊ฒฝ์ฐ์๋ p2์ ๊ฐ์ 1์ฆ๊ฐํด์ค๋ค.