[์ ๋ ฌ] 8. ์ด๋ถ๊ฒ์
<<ํ์ด>>
-๋์ ํ์ด-
๋ฌธ์ ๋ ์ด๋ถ๊ฒ์์ด๋ผ๋ ๋ฐฉ์์ ์ฌ์ฉํด์ ํ๋ ๊ฒ ๊ฐ์ง๋ง ์ผ๋จ ์ด๋ถ ๊ฒ์์ ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํ์ด๋ดค๋ค.
Arrays.sort๋ฅผ ํตํด์ ์ ๋ ฌ ํ ๋ค์ for๋ฌธ์ ๋๋ ค ๊ฐ์ ๊ฐ์ด ๋์ค๋ฉด ๊ทธ ์ธ๋ฑ์ค ๊ฐ์ ๋ฐํํ๋ ๋ฐฉ์์ ์ฌ์ฉํด์ ๊ตฌํ ์ ์์๋ค.
import java.util.Arrays;
import java.util.Scanner;
class Main {
private int solution(int n, int m, int[] arr) {
Arrays.sort(arr);
for(int i = 0; i < n; i++) {
if(arr[i] == m) return i + 1;
}
return -1;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++) {
arr[i] = in.nextInt();
}
System.out.println(T.solution(n, m , arr));
}
}
์ฌ๊ธฐ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ์๊ฐํ๋ค๋ฉด break๋ฅผ ํ์ฉํ ์๋ ์๋ค.
import java.util.Arrays;
import java.util.Scanner;
class Main {
private int solution(int n, int m, int[] arr) {
Arrays.sort(arr);
int answer = 0;
for(int i = 0; i < n; i++) {
if(arr[i] == m) {
answer = i + 1;
break;
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++) {
arr[i] = in.nextInt();
}
System.out.println(T.solution(n, m , arr));
}
}
-๊ฐ์ฌ๋ ํ์ด-
๊ฐ์ฌ๋์ ์ด๋ถ ๊ฒ์์ ํ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์๋ค. ์ด๋ถ ๊ฒ์์ด๋ ๋จผ์ ์ ๋ ฌ์ ํ ๋ค์, ๊ฐ์ฅ ์์ชฝ ๊ฐ์ lt๋ก ๋ง์ง๋ง ๊ฐ์ rt๋ก ์ง์ ํ ๋ค์
mid = lt + rt / 2 ๋ฅผ ํ๊ณ ๊ทธ ์ธ๋ฑ์ค์ ์์นํ ๊ฐ์ด ์ฐ๋ฆฌ๊ฐ ์ฐพ๋ ๊ฒ์ด๋ฉด ๊ทธ๋๋ก ๊ทธ๊ฐ์ ๋ฐํํ๊ณ return์ ํ๋ค. ํ์ง๋ง ๊ทธ๊ฒ ์๋๊ณ ๊ตฌํ๋ ค๋ ๊ฐ์ด
ํ์ฌ ์์น์ ๊ฐ๋ณด๋ค ๋ ํฐ ๊ฐ์ด๋ฉด ๊ทธ ๋ฐ์ ์๋ ์ชฝ์ ๋ฌด์ํ๊ณ ์์ชฝ์ ๊ฒ์ํ๋ค. ์ฆ, lt ๊ฐ์ mid + 1๋ก ๋ฐ๊ฟ์ค๋ค.
๋ฐ๋์ด๋ฉด ์์ชฝ์ ๋ฌด์ํ๊ณ ์๋์ชฝ์ ๊ฒ์ํ๋ค. ์ฆ, rt๊ฐ์ mid - 1 ํด์ค๋ค.
๊ทธ ๊ณผ์ ์ lt <= rt ์ผ ๋ ๊น์ง ํด์ค๋ค.
import java.util.Arrays;
import java.util.Scanner;
class Main {
private int solution(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;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++) {
arr[i] = in.nextInt();
}
System.out.println(T.solution(n, m , arr));
}
}
์ด๋ถ ๊ฒ์ ๋ฐฉ์์ผ๋ก ์๊ฐ๋ณต์ก๋๋ฅผ ์กฐ๊ธ ๋ ์ค์ผ ์ ์๋ค.!!
์ค๋๋ ์ข์ ๊ฐ๋ ์ ๋ฐฐ์ฐ๊ณ ๊ฐ๋๋ค~!
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ] 10.๋ง๊ตฌ๊ฐ ์ ํ๊ธฐ (1) | 2024.01.26 |
---|---|
[๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ] 9. ๋ฎค์ง๋น๋์ค (1) | 2024.01.24 |
[์ ๋ ฌ] 7. ์ขํ ์ ๋ ฌ (0) | 2024.01.20 |
[์ ๋ ฌ] 6. ์ฅ๋๊พธ๋ฌ๊ธฐ (2) | 2024.01.19 |
[์ ๋ ฌ] 5. ์ค๋ณต ํ์ธ (0) | 2024.01.18 |
๋๊ธ