알고리즘 공부/문제 풀이
-
[프로그래머스] 탐욕 알고리즘 - 큰 수 만들기알고리즘 공부/문제 풀이 2020. 8. 17. 20:30
public static String solution(String number, int k) { String answer = ""; char[] chs=number.toCharArray(); int[] nums=new int[number.length()]; int max_index=0; int l=number.length(); int left=0;//남은 제거할 수 //가능한 앞자리 중 가장 큰 수 찾기 for(int i=0;i 숫자 max_index=(nums[max_index]
-
[프로그래머스] 탐욕 알고리즘 - 체육복알고리즘 공부/문제 풀이 2020. 8. 17. 11:59
static int solution(int n, int[] lost, int[] reserve) { int answer = 0; int lost_index=0, reserve_index=0; int[] students=new int[n+2];//1~n번까지, 앞뒤로 하나씩 추가하여 따로 예외처리하지 않음 // 순차적으로 들어오지 않을 수 있기 때문에 Arrays.sort(lost); Arrays.sort(reserve); // students 배열 만들기 for(int i=1;i
-
[프로그래머스] 완전 탐색 - 소수 찾기알고리즘 공부/문제 풀이 2020. 8. 16. 16:37
문제를 크게 두 부분으로 나눌 수 있다. 1. 낱말카드로 생성가능한 모든 수 만들기 2. 소수 검사 1번이 되게 애를 먹여서.. 결국 다른 사람의 코드를 참고했다. (참고 : https://hoho325.tistory.com/201) 핵심은 바로 순열을 이용하는 것이다. 순열과 set 자료구조를 이용하여 중복없는 숫자들을 생성하고 소수인지 검사하여 개수를 세어주면 된다. package Programmers; import java.util.*; public class bruteforce2 { static char[] chs; static boolean[] visited; //순열 탐색할때 사용 static HashSet set; static char[] select; static int solution(S..
-
[프로그래머스] 완전탐색 - 카펫알고리즘 공부/문제 풀이 2020. 8. 16. 12:21
static int[] solution(int brown, int yellow) { int[] answer = {0,0}; int m; // yellow 가로 길이 int n; // yellow 세로 길이 (m>=n) for(m=1;m=n && brown==2*m+2*n+4) {//brown 조건 만족 answer[0]=m+2; answer[1]=n+2; } } } return answer; } 어렵지 않게 해결하였다 같은 레벨문제인 소수 찾기가 .. 어려울뿐..
-
[프로그래머스] 힙 - 디스크 컨트롤러알고리즘 공부/문제 풀이 2020. 8. 12. 00:00
https://codevang.tistory.com/316 참고하여 해결하였다. import java.util.*; class Job{ int s;//요청된 시간 int t;// 걸리는 작업 시간 public Job(int s,int t){ this.s=s; this.t=t; } } class Solution { public int solution(int[][] jobs) { int answer = 0; int end = 0; // 수행되고난 직후의 시간 int jobsIdx = 0; // jobs 배열의 인덱스 int count = 0; // 수행된 요청 갯수 // 원본 배열 오름차순 정렬 (요청시간 오름차순) Arrays.sort(jobs, (o1, o2) -> o1[0] - o2[0]); // 처리..
-
[프로그래머스] 스택/큐 - 프린터알고리즘 공부/문제 풀이 2020. 8. 11. 15:13
이전 문제와 마찬가지로 인쇄 목록의 순서가 있기 때문에 큐를 떠올렸다. 큐를 이용하여 문제를 해결하였다. class Waiting{ int priority;//우선순위와 int index;//location 변수와 비교 위해 index 추가 public Waiting(int p,int i) { this.priority=p; this.index=i; } } static int solution(int[] priorities, int location) { int answer = 0; //뽑힌 인쇄 수 == 뽑힌 인쇄 순서 Queue q=new LinkedList(); //대기 큐 초기화 for(int i=0;i 출력 if(top>-1 && q.peek().priority==priorities[top]) { W..