본문 바로가기

전체 글455

[JAVA] 소수 찾기 소수란 1과 자기 자신을 제외하고는 약수가 없는 수이다. 소수를 찾는 가장 기초적인 방법은 2~n-1 까지 반복문을 돌리거나, 혹은 2~n/2 까지 반복문을 돌리며 나누어봄으로써 소수를 찾을 수 있겠지만, 당연히 이는 효율적이지 못한 방법이다. 하지만 아래의 방법을 사용하면 않고 √n까지 나누면 소수인지 알 수가 있다. 이 방법은 O(√n)의 시간 복잡도를 가진다. boolean isPrime(int n) { if(n 2020. 4. 4.
[JAVA][DFS] 타겟넘버_프로그래머스 level 3 출처 : https://programmers.co.kr/learn/courses/30/lessons/43165?language=java 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 .. 2020. 4. 4.
[JAVA][Comparable][Compare] 비교 숫자 비교 Integer x = 0; Integer y = 0; Integer z = 1; x.compareTo(1); // 0 - 1 = -1 Integer.compare(x,y); // 0 Integer.compare(x,y); // -1 x.compareTo(y); //0 x.compareTo(z); //-1 *사실상 그냥 빼기 *int 안됨. Integer 같은 자료형만 가능. 문자열 비교 String str = "minwooLee"; str.compareTo("minwooLee"); // 완전히 일치하기에 0 str.compareTo("minwoo"); // 뒤의 세 개가 일치하지 않아 3 str.compareTo("minwool") // L부터 다른데, L의 아스키 코드가 76, l의 아스키 .. 2020. 4. 4.
[JAVA][PriorityQueue][ArrayList] 디스크 컨트롤러_프로그래머스 level 3 출처 : https://programmers.co.kr/learn/courses/30/lessons/42627# 문제 설명 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를들어 - 0ms 시점에 3ms가 소요되는 A작업 요청 - 1ms 시점에 9ms가 소요되는 B작업 요청 - 2ms 시점에 6ms가 소요되는 C작업 요청 와 같은 요청이 들어왔습니다. 이를 그림으로 표현하면 아래와 같습니다. 한 번에 하나의 요청만을 수행할 수 있기 때문에 각각의 작업을 요청받은 순서대로 처리하면 다음과 같이 처리 됩니다. - A: 3ms 시점에 작업 완료 (요청에서 종료까지 : 3ms) -.. 2020. 4. 4.
[JAVA][Array] 배열 정렬 1차원 배열 import java.util.Arrays; Arrays.sort(arr); //오름차순 Arrays.sort(arr, i, j); //i부터 j까지 오름차순 정렬 Arrays.sort(arr, Collections.reverseOrder()); //내림차순 n차원 배열 1) 0번째 인자로 정렬 Arrays.sort(arr, Comparator.comparingInt(o1 -> o1[0])); 2) 0, n번째 인자로 정렬 (0먼저, 그 다음 n번째 정렬) Arrays.sort(arr, (x, y) -> { if(x[0] == y[0]) return Integer.compare(x[n], y[n]); else return Integer.compare(x[0], y[0]); }); 2020. 4. 4.
[JAVA] PriorityQueue import java.util.PriorityQueue; PriorityQueue arr = new PriorityQueue(); 추가 arr.add(e) arr.offer(e) 삭제 arr.remove(e) 전체 삭제 arr.clear() 크기 arr.size() 가져오기(헤드 검색 및 제거) arr.poll() 가져오기(헤드 검색) arr.peek() *에러 발생시 add는 예외 발생, offer는 false 반환 *선언시 자동으로 정렬됨. 객체의 큐로 할 때는 implements Comparable 를 한 객체로 하면 정렬됨. https://docs.oracle.com/javase/10/docs/api/java/util/Queue.html#peek() 2020. 4. 4.
[JAVA] ArrayList import java.util.ArrayList; 초기화 ArrayList arr = new ArrayList(); 추가 arr.add(e) i번째 삭제 arr.remove(i) i에서 j번째까지 삭제 arr.remove(i, j) 전체 삭제 arr.clear() i번째 수정 arr.set(i, e) 보유 여부 (Boolean) arr.contains(e) 위치 arr.indexOf(e) 사이즈 arr.size() 오름차순 정렬 arr.sort(null) 기존 배열로 생성 ArrayList arr = new ArrayList(Arrays.asList(arr2)); 얕은 복사 ArrayList arr3 = (ArrayList) arr.cline(); 최대 최소 Collections.min(arr) || C.. 2020. 4. 4.
[JAVA][PriorityQueue] 더 맵게_level 2 출처 : https://programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코.. 2020. 4. 4.
[JAVA][ArrayList] 기능개발_프로그래머스 level2 출처 : https://programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발.. 2020. 4. 4.
[JAVA][Array] 탑_프로그래머스 level2 출처 : https://programmers.co.kr/learn/courses/30/lessons/42588 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 수평 직선에 탑 N대를 세웠습니다. 모든 탑의 꼭대기에는 신호를 송/수신하는 장치를 설치했습니다. 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다른 탑으로 송신되지 않습니다. 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 탑이 왼쪽으로 동시에 레이저 신호를 발사합니다. 그러면, 탑은 다음과 같이 신호를 주고받습니다. 높이가 4인 다섯 번째 탑.. 2020. 4. 4.
[JAVA][Array] 주식가격_프로그래머스 level2 출처 : https://programmers.co.kr/learn/courses/30/lessons/42584?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 입출력 예 pricesreturn [1, 2, 3, 2, 3.. 2020. 4. 4.