Lv 2. pK진수에서 소수 개수 구하기
·
Algorithm & Data Structures/Programers
어떠한 정수 N이 있을 때 N을 k진수로 바꾸는 방법은 의외로 쉬웠다.toString(N,k); 를 하게되면 N이 k 진수로 변환된 채로 문자열로 반횐되었다.그리고 소수를 구하는 빠른 방법 중에서 내가 아는것은 제곱근까지의 나눗셈이었기 때문에 spilt을 활용하여 나온 문자열을 toLong 으로 변환하여 그 숫자를 제곱근 까지 나누어서 소수판별을 하였다. import java.util.*;class Solution { public int solution(int n, int k) { int answer = 0; String number = Integer.toString(n,k); String[] numbers = number.split("0"); fo..
Lv 2. 타겟 넘버
·
Algorithm & Data Structures/Programers
DFS 를 이용하여 Depth 만큼 파고 들면서 - , + 를 탐색하였다.최종 Depth에 도착했을 시 target 과 결괏값을비교하여 answer 를 1씩 더하는 식으로 풀어내었다. import java.util.*;class Solution { public int answer = 0, end; public boolean[] isVisited; public int solution(int[] numbers, int target) { isVisited = new boolean[numbers.length]; end = target; DFS(0,numbers,0); return answer; } public void DFS(int d..
Lv 2. 전화번호 목록
·
Algorithm & Data Structures/Programers
처음에는 비교할 문장이 2개 이니까 2중루프를 통해 구현하였고 바로 시간초과오류가 발생하였다.다음은 Map 을 사용한 해싱을 이용하여 풀이한 코드이다.주어진 문제에서 비교군을 대상으로 하면 1000000*1000000 이지만전화번호의 길이를 대상으로 하면 1000000*20 이더라.이를 이용하였다. containsKey라는 메서드를 이용하여 풀이하였다.containsKey는 해싱을 이용한 함수로 시간복잡도가 O에 달하는 효율적인 탐색 메서드이다.중복된 전화번호가 없기에 사용할 수 있었다.import java.util.*;class Solution { public boolean solution(String[] phone_book) { HashMap map = new HashMap(); ..
Lv 2. [1차] 뉴스 클러스터링
·
Algorithm & Data Structures/Programers
이론상으로 어려운 문제는 아니었다. string 을 param 으로 받아 2개씩 쪼개는 function과  그 function을 통해서 나온 두가지의 list의 교집합, 합집합을 구하면 되는 문제였다.다만 교집합과 합집합을 구하는 부분에서 두가지 list에서 동시 제거를 하다보니 오류가 발생하여 시간이 필요했다. 한가지 list에서 삭제하고 교집합은 따로 리스트에 담아 그 리스트의 크기를 측정하여 교집합의 크기를두가지 리스트의 크기를 더하여 합집합의 크기를 구하였다. import java.util.*;class Solution { public int solution(String str1, String str2) { int answer = 0, n = 0, u = 0; Arr..
Lv 2. 피로도
·
Algorithm & Data Structures/Programers
완전탐색 문제였다. DFS 를 이용하였고 오랜만에 사용하여 어색한 부분이 많았다. import java.util.*;class Solution { public int answer=0; public boolean[] isVisited; public int solution(int k, int[][] dungeons) { isVisited = new boolean[dungeons.length]; DFS(0,k,dungeons); return answer; } public void DFS(int depth,int k,int[][] dungeons){ for(int i = 0 ; i =0){ is..
Lv 2. 프로세스
·
Algorithm & Data Structures/Programers
우선순위 queue를 이용하여 문제를 해결하였다 우선순위 queue를 이용하면 알아서 정렬이 되므로 우선순위를 매기고 for 문을 통해 처음부터 끝까지 돌아가면서 우선순위에 해당하는 인자를 빼내었다. import java.util.*;class Solution { public int solution(int[] priorities, int location) { PriorityQueue q = new PriorityQueue(Collections.reverseOrder()); int answer = 0; for (int i : priorities) q.add(i); while (!q.isEmpty()) { for..
Lv 2. 튜플
·
Algorithm & Data Structures/Programers
처음 설계 하였을 때는 s 에 들어간 문자 하나하나 분석해가며 정수를 만들어가는 식으로 설계 하였으나 코드의 복잡성, 효율성에서 코드작성중 뒤엎게 되었고 String , Integer의 함수들을 이용하여 문자열을 분석해 나가는 방식으로 설계 하였다. import java.util.*;class p튜플 { public ArrayList solution(String s) { ArrayList answer = new ArrayList(); s = s.substring(2,s.length()-2).replace("},{","-"); String[] str = s.split("-"); Arrays.sort(str, new Comparator(){ ..
Lv 2. 기능개발
·
Algorithm & Data Structures/Programers
이번문제는 queue에다가 기능개발에 소요되는 각각의 기능들의 소요일수를 저장 해 놓고 하나씩 빼보며 몇개를 연속으로 뺄 수 있나 체크하고 기록하여 출력하였다. import java.util.*;class Solution { public int[] solution(int[] progresses, int[] speeds) { List resultList = new ArrayList(); int max = -1000, memory = 0; Queue q = new ArrayDeque(); for(int i = 0 ; i = q.peek()){ memory += 1; q.poll(); ..
Lv 2. 1차 캐시
·
Algorithm & Data Structures/Programers
LRU 에 대한 개념이 있어야 한다. cache hit, cache miss 와 같이 이해할 수 없던 용어가 많아 LRU에 대해 공부하고 이해하여 풀 수 있었다.가장 오랫동안 사용되지 않은 데이터는 캐시에서 제거하고 사용 된 적 있는 데이터는 캐시에 남겨 둠으로써 캐시메모리 관리하는 방법이다. 다음은 풀이코드이다.import java.util.*;class Solution { LinkedList list = new LinkedList(); int answer = 0; public int solution(int cacheSize, String[] cities) { if(cacheSize==0) return cities.length*5; ..
Lv 2. pH-index
·
Algorithm & Data Structures/Programers
별다른 고민없이 정렬로 풀 수 있었다.Arrays.sort 를 이용하여 int[] 배열을 오름차순 정렬후 차례대로 올라가면서 검사하고 값을 찾아 나갔다.import java.util.*;class pH_index { public int solution(int[] citations) { int answer = 0; Arrays.sort(citations); for(int i =0 ; i