복습 1
2020-01-18
복습 1 (1월 3주차)
-
최소 공배수
두가지만 생각하기 1)m%n==0 이라는 뜻은 n이 m으로 나누어 진다는 것 2)아닐때는 계속 계산해주기
-
10진수 n을 m진수로 만들기
몫이 m보다 작을때까지 나누기 & 기저에서부터 출력하는지 아닌지 확인해주기
static public void sol(int n , int m) { //숫자 n과 m진수 if(n<m) { System.out.print(n); return; } else { sol(n/m, m); System.out.print(n%m); } }
-
List to Array & Array to List
static public void sol() { //primitive 일 때 ArrayList<Integer> list = new ArrayList<Integer>(); int arr[] = {}; arr = list.stream().mapToInt(i->i).toArray(); //non primitive 일 때 ArrayList<String> list1 = new ArrayList<String>(); String arr1[] = {}; arr1 = (String[]) list1.toArray(); }
static public void sol() { //primitive 일 때 int arr1[] = {}; List<Integer> list1 = new ArrayList(); list1 = Arrays.stream(arr1).boxed().collect(Collectors.toList()); //non primitive 일 때 String arr2[] = {}; List list2 = new ArrayList(); list2 = Arrays.asList(arr2); }
List reverse List<Integer> list1 = new ArrayList(); Collections.reverse(list1); Collections.sort(list1,Collections.reverseOrder());
-
라면공장 (프로그래머스)
static public void sol() {
1. pq를 reverse 한다 매번
2. for문은 k까지 돌리고
3. if i가 dates[i]가 되면 pq에 넣는다
4. if stk==0, pq의 가장 큰 값 넣는다 (이때만 ++answer)
5. stk는 매번 --
}
- PriorityQueue를 reverseOrder하기 위해서는 PriorityQueue생성할 때
PriorityQueue<Integer> pq = new PriorityQueue<Integer>(Comparator.reverseOrder());
- 소수 찾기 (프로그래머스)
static ArrayList<Integer> list = new ArrayList<Integer>();
static int ans = 0;
static public void sosu(int n) {
if(n==1 || n ==0)
return;
boolean chk = false;
for(int i=2;i<n;i++) {
if(n%i == 0)
chk=true;
}
if(chk == false)
ans++;
}
static public void swap(int arr[], int depth, int i) {
int temp = arr[depth];
arr[depth] = arr[i];
arr[i] = temp;
}
static public void perm(int arr[], int depth, int n, int r) {
if(depth == r){
String a = "";
for(int i=0;i<r;i++){
a = a + arr[i];
}
int aa = Integer.parseInt(a);
if(!list.contains(aa)){
list.add(aa);
sosu(aa);
}
return;
}
for(int i=depth; i<arr.length;i++) {
swap(arr,depth,i);
perm(arr,depth+1,n,r);
swap(arr,depth,i);
}
}
static public int solution(String numbers) {
int arr[] = new int[numbers.length()];
for(int i=0;i<numbers.length();i++)
arr[i] = Integer.parseInt(String.valueOf(numbers.charAt(i)));
for(int i=1; i<=numbers.length();i++)
perm(arr,0,numbers.length(),i);
return ans;
}
- a에 “” 빈 게 들어갔다는건 depth==r==0이라는 뜻이고 0일때 뭔가 잘못들어갔다는 걸 알아챘어야했다
-
또 소수를 구할 때는 n ==1 n ==0 일때도 체크해줘야 한다