2023. 10. 13. 10:45ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1219
-> ์ด์ ๋ฌธ์ ํ์ด
1. ๋ ๋ฐฐ์ด ํฉ์น๊ธฐ
์ค๋ช
์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ์ด ๋ ๋ ๋ฐฐ์ด์ด ์ฃผ์ด์ง๋ฉด ๋ ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ํฉ์ณ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์ฒซ ๋ฒ์งธ ๋ฐฐ์ด์ ํฌ๊ธฐ N(1<=N<=100)์ด ์ฃผ์ด์ง๋๋ค.
๋ ๋ฒ์งธ ์ค์ N๊ฐ์ ๋ฐฐ์ด ์์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฃผ์ด์ง๋๋ค.
์ธ ๋ฒ์งธ ์ค์ ๋ ๋ฒ์งธ ๋ฐฐ์ด์ ํฌ๊ธฐ M(1<=M<=100)์ด ์ฃผ์ด์ง๋๋ค.
๋ค ๋ฒ์งธ ์ค์ M๊ฐ์ ๋ฐฐ์ด ์์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฃผ์ด์ง๋๋ค.
๊ฐ ๋ฆฌ์คํธ์ ์์๋ intํ ๋ณ์์ ํฌ๊ธฐ๋ฅผ ๋์ง ์์ต๋๋ค.
์ถ๋ ฅ
์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ๋ฐฐ์ด์ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ 1
3
1 3 5
5
2 3 6 7 9
์์ ์ถ๋ ฅ 1
1 2 3 3 5 6 7 9
๋ฌธ์ ํ์ด 1
public int[] solution(int[] a, int[] b)
{
int[] answer = new int[a.length + b.length];
System.arraycopy(a, 0, answer, 0, a.length);
System.arraycopy(b, 0, answer, a.length, b.length);
Arrays.sort(answer);
return answer;
}
๐ฉ๐ป : ๋๋ ๊ทธ๋ฅ ๋ณด์๋ง์.. ์.. ํฉ์น๊ณ ์ ๋ ฌํด์ผ์ง ~ ํด์ arrayCopy ๋ฉ์๋์ sort๋ฅผ ์ฌ์ฉํด์ ๋๋๋ค..
(๊ทผ๋ฐ ๊ฐ์ฌ๋์ด ๊ทธ๋ฌ๋ผ๊ณ ๋ฌธ์ ๋ธ๊ฒ ์๋๋ผ๊ณ .. ใ )
๊ฐ๋จํ๊ฒ ํฉ์น๊ณ , ์ ๋ ฌ์ System.arraycopy ๋ฉ์๋์ Arrays.sort ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ํ ์๋ ์๋ค..!
๋ฌธ์ ํ์ด 2
public ArrayList<Integer> solution2(int n, int[] a, int m, int[] b)
{
ArrayList<Integer> answer = new ArrayList<>();
int p1 = 0, p2 = 0;
while(p1 < n && p2 < m)
{
if (a[p1] < b[p2]) {
answer.add(a[p1++]);
} else {
answer.add(b[p2++]);
}
}
while (p1 < n)
{
answer.add(a[p1++]);
}
while (p2 < m )
{
answer.add(b[p2++]);
}
return answer;
}
๐พ : ์๊ฐํด๋ณด๋ ์น์ 3์ ์ฃผ์ ๋ Two Pointers ๊ฐ ์ฃผ์ ๋๊น. .์ด๋ฅผ ์ฌ์ฉํ์ด์ผ ํ๋คใ
p1, p2 ๋๊ฐ์ point๋ฅผ ๋ง๋ค๊ณ , p1์ a ๋ฐฐ์ด์ ๋๊ณ , p2๋ b ๋ฐฐ์ด์ ๋๋ฉด์ ๋น๊ตํด์ฃผ๋ฉด ๋๋ค.
while ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ p1์ด๋ p2 ๋ ์ค ํ๋๋ผ๋ ๋ฐฐ์ด์ ๋ชจ๋ ๋ค ๋์์ผ๋ฉด ๋ฐ๋ณต๋ฌธ์ ๋์ค๊ณ , ๊ทธ ๋๋จธ์ง ๋ฐฐ์ด์ ์ถ๊ฐํด์ฃผ๋๋ก ํ๋ค.
a[p1] < b[p1] ์ด๋ฉด ๋จผ์ answer์ a[p1]์ add ํด์ฃผ๊ณ , ๊ทธ ๋ค์ p1์ ๊ฐ์ +1 ํด์ฃผ๊ณ , +1 ํด์ค a[p1]๊ณผ b[p2]๋ฅผ ๋น๊ตํด์ฃผ๋ฉด ๋๋ค.