프로그래머스 13

[프로그래머스] 모음 사전_자바

https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제가 완전탐색 카테고리에 들어가 있어서 처음에는 DFS로 풀었다. 답은 맞았지만 효율적이지 못하다는 생각이 들어 더 찾아봤다. 규칙을 찾아 조금 더 수학적으로 접근하는 방법이 있었다. 규칙을 통해 2번째, 1번째 문자는 몇 번만에 바뀌는지 알 수 있다. 5번째 문자 바뀔 때 = 1 4번째 문자 바뀔 때 = 1 + 5^1 = 6 3번째 문자 바뀔 때 = 6 + 5^2 = 31 2번째 문자 바뀔..

[프로그래머스] 소수 찾기_자바

https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr https://hu-coding.tistory.com/132 [Java] 프로그래머스 Lv.2 : 소수 찾기 https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니 hu-coding.tistory.com ..

[프로그래머스] 가장 큰 수_자바

https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 맨 앞자리수가 큰 순으로 정렬하면 된다고 생각했다. 따라서 numbers의 원소들을 문자열로 변환하고 String 배열에 삽입했다. 원소들을 정렬하기 위해 Comparator를 사용하고 compare 메소드를 override 해주었다. 사전순으로 정렬지만 두 번째 예제처럼 303 보다 330이 더 큰 경우가 있기 때문에 두 문자열을 비교할 수 있도록 compare 메소드에 구현했다. (이전에 Co..

[프로그래머스] 이중우선순위큐_자바

https://school.programmers.co.kr/learn/courses/30/lessons/42628 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 우선순위큐 2개를 사용해서 풀 수 있는 문제 (하나는 오름차순 정렬, 다른 하나는 내림차순 정렬) PriorityQueue q = new PriorityQueue(); PriorityQueue q2 = new PriorityQueue(Collections.reverseOrder()); ** queue에서 특정 값을 지우는 것은 -> quque.remove(값) ** import java.util...

[프로그래머스] 프린터_자바

https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 우선 순위 큐를 사용해야 하는 문제 priorities 배열을 우선 순위 큐에 넣으면 오름차순으로 정렬 되기 때문에 PriorityQueue q = new PriorityQueue(Collections.reverseOrder()); 이렇게 내림차순으로 정렬한다. import java.util.*; public class P4 { public static void main(String[] args)..

[프로그래머스] 위장_자바

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 예를 들어 상의가 A벌, 하의가 B벌, 안경이 C벌 있다고 하자. 상의, 하의, 안경을 조합한 경우의 수는 A*B*C 이다. 하지만 각 의상을 선택 안 하는 경우도 있기 때문에 경우의 수는 (A+1)*(B+1)*(C+1) 이다. 여기에 모두 선택 안 하는 경우를 뺀다. import java.util.*; public class P4 { public static void main(String[] a..

[프로그래머스] 폰켓몬_자바

https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정수 배열 nums -> List -> Set 순으로 변환하여 중복 제거된 원소의 개수를 파악했다. Set 크기와 N/2를 비교하여 더 작은 수가 답이 된다. import java.util.*; public class P2 { public static void main(String[] args){ P2 p = new P2(); int[] nums = {3,1,2,3}; Sy..

[프로그래머스]연습문제>제일 작은 수 제거하기 Java

https://programmers.co.kr/learn/courses/30/lessons/12935 코딩테스트 연습 - 제일 작은 수 제거하기 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1 programmers.co.kr arr 길이가 1보다 작거나 같은 경우는 answer는 -1만 리턴. 나의 코드 public static int[] solution(int[] arr) { int min = arr[0]; // 초기 최소값 int index = 0; // 최소값 인덱스 if(arr.length

[프로그래머스]연습문제>2016년 Java

https://programmers.co.kr/learn/courses/30/lessons/12901 코딩테스트 연습 - 2016년 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까 programmers.co.kr 2016년 1월 1일은 금요일이라는 힌트를 가지고 시작했다. 금요일이라는 힌트 때문에 day 배열을 "FRI","SAT","SUN","MON","TUE","WED","THU" 순으로 작성했다. 2016년은 윤년이라고 했으므로 2월은 29일까지 있다. result 변수에 a달 전까지의 date를 더해준다. 그리고 result..

[프로그래머스]Summer/Winter Coding(~2018)>예산 Java

https://programmers.co.kr/learn/courses/30/lessons/12982 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 programmers.co.kr 부서별로 신청한 금액이 들어있는 배열 d를 오름차순 정렬을 하고 차례로 합해서 예산과 비교한다. 합할 때마다 지원할 수 있는 부서 수를 증가시킨다. 비교해서 합한 값이 예산보다 크면 break한다. public static int solution(int[] d, int budget) { int answer = 0; int sum = 0; Arrays.sort(d);..