2023. 11. 9. 09:27ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1246
-> ์ด์ ๋ฌธ์ ํ์ด
8. ์ด๋ถ ๊ฒ์
์ค๋ช
์์์ N๊ฐ์ ์ซ์๊ฐ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋๋ค.
N๊ฐ์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋ค์ N๊ฐ์ ์ ์ค ํ ๊ฐ์ ์์ธ M์ด ์ฃผ์ด์ง๋ฉด
์ด๋ถ๊ฒ์์ผ๋ก M์ด ์ ๋ ฌ๋ ์ํ์์ ๋ช ๋ฒ์งธ์ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์. ๋จ ์ค๋ณต๊ฐ์ ์กด์ฌํ์ง ์์ต๋๋ค.
์ ๋ ฅ
์ฒซ ์ค์ ํ ์ค์ ์์ฐ์ N(3<=N<=1,000,000)๊ณผ M์ด ์ฃผ์ด์ง๋๋ค.
๋ ๋ฒ์งธ ์ค์ N๊ฐ์ ์๊ฐ ๊ณต๋ฐฑ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋๋ค.
์ถ๋ ฅ
์ฒซ ์ค์ ์ ๋ ฌ ํ M์ ๊ฐ์ ์์น ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
8 32
23 87 65 12 57 32 99 81
์์ ์ถ๋ ฅ 1
3
๋ฌธ์ ํ์ด 1
public int solution(int n, int m, int[] arr)
{
int answer = 0;
Arrays.sort(arr);
for (int i = 0; i < n; i ++)
{
if (arr[i] == m) {
return i + 1;
}
}
return answer;
}
๐ฉ๐ป : ๋๋ ์ด ๋ฌธ์ ๋ฅผ ๊ทธ๋ฅ.. ๋จ์ํ ์ฃผ์ด์ง arr ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ์ ํด์ฃผ๊ณ , ๊ทธ ๋ค์ for ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ m ๊ฐ๊ณผ arr ๊ฐ์ด ๊ฐ์์ง ๋น๊ตํ๊ณ , ๊ฐ์ผ๋ฉด ๊ทธ arr์ ์ธ๋ฑ์ค ๊ฐ + 1 ์ ๋ฆฌํดํ๋๋ก ํ๋ค.
์ฆ, ์์ฐจ ๊ฒ์์ ํตํด ๋ฌธ์ ๋ฅผ ํ์๋ค.
๋ฌธ์ ํ์ด 2
public int solution2(int n, int m, int[] arr)
{
int answer = 0;
Arrays.sort(arr); // ์ด๋ถ ๊ฒ์์ ์ ๋ ฌ์ ๊ธฐ๋ฐ์ผ๋ก ํด์ผํจ
int lt = 0, rt = n-1;
while (lt <= rt)
{
int mid = (lt + rt) / 2;
if (arr[mid] == m) {
answer = mid + 1;
break;
}
if (arr[mid] > m) {
rt = mid-1;
}else {
lt = mid + 1;
}
}
return answer;
}
๐พ : ๊ฐ์ฌ๋์ด ์์ฐจ ๊ฒ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํ๋ฉด ๋ง์ฝ ์ต์ ์ ๊ฒฝ์ฐ๋ก 100๊ฐ์ ์ซ์๊ฐ ์ฃผ์ด์ก๋๋ฐ ๋งจ ๋ง์ง๋ง ๊ฐ์ ๊ตฌํ๋ผ๊ณ ํ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ฒ์๋ถํฐ ๋๊น์ง ๋น๊ตํด ๋์๊ฐ์ผ ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(n) ์ด๋ผ๊ณ ํ๋ค.
์์ฐจ ๊ฒ์์ด ์๋ ์ด๋ถ ๊ฒ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํ๋ฉด ๋ ๋น ๋ฅด๊ฒ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
๋จผ์ ์ด๋ถ ๊ฒ์์ด๋ ์ฃผ์ด์ง ๋ฐฐ์ด์ ๋ฐ์ผ๋ก ๋๋ ์ ๊ทธ '๋ฐ'์ ํด๋นํ๋ ๊ฐ์ด ์ฃผ์ด์ง m ๋ณด๋ค ํฌ๋ฉด ๊ทธ '๋ฐ' ๊ฐ์ ์ด์ ๊ฐ๋ถํฐ ํด์ ๋ค์ ๊ทธ ๋ฐ์ ํ์ํ๊ณ , ๋ง์ฝ ์ฃผ์ด์ง m ๋ณด๋ค ์์ผ๋ฉด ๊ทธ '๋ฐ'์ ํด๋นํ๋ ๊ฐ์ ๊ทธ ๋ค์๊ฐ๋ถํฐ ๋ค์ ๊ทธ ๋ฐ์ ํ์ํ๊ณ ...
์ด๋ฐ์์ผ๋ก ํด์ ๊ณ์ ๋น๊ตํด๊ฐ๋ ๊ฒ์ด๋ค!
์ด๋ ๊ฒ ํ๋ฉด ์์ฐจ ๊ฒ์๋ณด๋ค ๋น ๋ฅด๊ฒ ๊ฐ์ ๊ตฌํ ์ ์๋ค.