์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜3. Two Pointers, Sliding Window [ํšจ์œจ์„ฑ : O(n^2) --> O(n)]

2023. 10. 13. 10:45ใ†์ธํ”„๋Ÿฐ/์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ์ž…๋ฌธ : ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„

728x90

 

https://hyejin.tistory.com/1219

 

์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜2. Array(1, 2์ฐจ์› ๋ฐฐ์—ด) : ์ž„์‹œ ๋ฐ˜์žฅ ์ •ํ•˜๊ธฐ

https://hyejin.tistory.com/1218 ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜2. Array(1, 2์ฐจ์› ๋ฐฐ์—ด) : ๋ด‰์šฐ๋ฆฌ https://hyejin.tistory.com/1217 ์ž๋ฐ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด ์ž…๋ฌธ. ์„น์…˜2. Array(1, 2์ฐจ์› ๋ฐฐ์—ด) : ๊ฒฉ์žํŒ ์ตœ๋Œ€ํ•ฉ https:

hyejin.tistory.com

-> ์ด์ „ ๋ฌธ์ œ ํ’€์ด 

 

 

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]๋ฅผ ๋น„๊ตํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

 

 

 

 

 

 

 

 

728x90