import java.util.*;
public class main {
public static void main(String[] args) {
Solution s = new Solution();
boolean[] a = s.Chap07Example01(5, new int[]{8,3,7,9,2}, 3, new int[]{5,7,9});//이진탐색
for(boolean aa : a)
System.out.print(aa + " ");
System.out.println();
boolean[] b = s.Chap07Example01_Guide01(5, new int[]{8,3,7,9,2}, 3, new int[]{5,7,9});//계수정렬
for(boolean aa : b)
System.out.print(aa + " ");
System.out.println();
boolean[] c = s.Chap07Example01_Guide02(5, new int[]{8,3,7,9,2}, 3, new int[]{5,7,9});//집합자료형
for(boolean aa : c)
System.out.print(aa + " ");
System.out.println();
System.out.println(s.Chap07Exmaple02(4,6,new int[]{19,15,10,17}));
}
}
class Solution {
public boolean[] Chap07Example01(int n, int[] stock, int m, int[] find) {
boolean[] answer = new boolean[m];
Arrays.sort(stock);
for(int i = 0; i<m;++i) {
int start = 0;
int mid = stock.length/2;
int end = stock.length-1;
while(start <= end) {
if(stock[mid] < find[i]) {
start = mid+1;
mid = (end+start)/2;
}
else if(stock[mid] > find[i]) {
end = mid-1;
mid = (end+start)/2;
}
else {
answer[i] = true;
break;
}
}
}
return answer;
}
public boolean[] Chap07Example01_Guide01(int n, int[] stock, int m, int[] find) {
boolean[] answer= new boolean[m];
int[] stocks = new int[1000001];
for(int s : stock)
stocks[s] = 1;
for(int i = 0; i<m;++i) {
if(stocks[find[i]] == 1)
answer[i] = true;
}
return answer;
}
public boolean[] Chap07Example01_Guide02(int n, int[] stock, int m, int[] find) {
boolean[] answer= new boolean[m];
Set<Integer> set = new HashSet<>();
for(int s: stock)
set.add(s);
for(int i = 0; i<m;++i) {
if(set.contains(find[i]))
answer[i] = true;
}
return answer;
}
public int Chap07Exmaple02(int n, int m, int[] ddeok) {
int answer = 0;
Arrays.sort(ddeok);
int start = 0;
int end = ddeok[ddeok.length - 1];
int mid = (start + end) / 2;
while(true) {
int tmp = 0;
for(int d: ddeok) {
if(d > mid) {
tmp += d-mid;
}
}
if(tmp == m) {
answer = mid;
break;
}
else if(tmp < m) {
end = mid-1;
mid = (start+end)/2;
}
else if(tmp > m) {
start = mid+1;
mid = (start+end)/2;
}
}
return answer;
}
}
개념은 쉽지만 자칫 실수하면 찾기 힘들다. 개념을 맞게 다 써놨음에도 뭔가 오류가 생겼어서 뭐가 문제였지 하고 쳐다보고 있었다.
'책(이것이 취업을 위한 코딩 테스트다)' 카테고리의 다른 글
이것이 취업을 위한 코딩테스트다. Chapter09 (0) | 2021.06.29 |
---|---|
이것이 취업을 위한 코딩테스트다. Chapter08 (0) | 2021.06.23 |
이것이 취업을 위한 코딩테스트다. Chapter06 (0) | 2021.06.15 |
이것이 취업을 위한 코딩테스트다. Chapter05 (0) | 2021.06.13 |
이것이 취업을 위한 코딩테스트다. Chapter04 (0) | 2021.06.10 |