일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 재귀함수
- java Collections.sort()
- 서로소
- 후위표기
- 알고리즘 그래프
- 상속
- 자바 재귀 조합
- inner class
- Java
- parseInt()
- 자바 순열 코드
- 자바입출력
- str to char array
- 조합 재귀
- 순열 재귀
- 순열코드
- Interface
- 자바스크립트 이벤트중지
- jquery 속성선택자
- 자바 조합 재귀
- char to str
- jquery dom 계층 선택자
- java lambda
- 자바스크립트 이벤트처리
- 재귀
- java 내부 클래스
- 알고리즘
- 자바
- jquery 이벤트 처리
- jquery 필터선택자
- Today
- Total
목록알고리즘 (120)
유블로그
프로그래머스 level3 입국심사 소요시간 : 아마도 ... 2시간30분...?3시간...???? 너무 어려웠다.. 기초 아이디어를 다른 사람에게 듣고 코드 짰다.... 통과가 왜 안되는 지 잘모르겠고 통과가 왜 되는 건지도 잘 모르겠다 코드 조금만 바꿔도 안되는데 이해가 안간다. 어쨌든 푼 방법은 제일 많이 걸리는 시간을 max 로 한 후에 이분탐색으로 처리할 수 있는 사람보다 많으면 right 를 줄이고 적으면 left를 올려서 시간을 구하는 것이다. 이 때 찾고 있는 시간을 찾더라도 더 작은 시간이 있는 경우 때문에 right 를 -1해서 더 검색해본다. import java.util.Arrays; class Solution { public long solution(int n, int[] times..
프로그래머스 level3 등굣길 소요시간 : 1시간 19분 세상 오래걸렸다 처음에 잘못 생각해서 3차원 배열로 했다가 갈아엎었다 ㅋㅋㅋ 자신 칸 기준 위와 왼쪽의 값을 더해서 마지막 목적지 값을 반환하면 된다. 그런데 isPuddles 함수를 지우고 처음부터 map 에다가 puddles 를 표시하는 게 좋을 것 같다. class Solution { int[][] Puddles; public int solution(int m, int n, int[][] puddles) { Puddles = puddles; int[][] map = new int[n+1][m+1]; map[1][1] = 1; for (int i = 1; i
프로그래머스 level3 정수 삼각형 소요시간 : 53분 dp 항상 어려워했었고 푸는데 엄청 오래걸렸다 ㅋㅋㅋㅋㅋㅋ 그냥 dfs로 하니 시간초과나서 한참 고민했다 최댓값을 찾으려면 결국 밑에 있는 값이 중요하니 세로(i)를 N-1부터 시작해서 1까지, 가로(j)를 0~길이-1까지 양쪽 대각선 위로 다 더해보고 최댓값을 갱신했다. 결국 아래에서 꼭대기까지 최대합이 triangle[0][0] 에 저장되게 된다. class Solution { int MAX = 0; int N; public int solution(int[][] triangle) { N = triangle.length; if(N == 1) return triangle[0][0]; int[] arr; for (int i = N-1; i >= 1;..
프로그래머스 level3 단어변환 소요시간 : 16분 dfs 로 풀었다. begin 에서 1글자만 다른 단어를 words 배열에서 찾아서 dfs 를 시작한다. cnt 변수를 들고다니면서 dfs를 들어갈 때마다 단어변환횟수 +1 한다. begin 이 target 과 같은 순간 종료되고 매번 cnt 가 더 작은 값으로 MIN이 업데이트 된다. class Solution { boolean[] selected; int N; public int solution(String begin, String target, String[] words) { N = words.length; selected = new boolean[N]; for (int i = 0; i < N; i++) { if(isDiffOne(begin, w..
프로그래머스 level2 소수찾기 소요시간 : 40분 문제 대충 읽어서 시간이 더 걸렸다...ㅋ subset으로 숫자 선택 후 선택된 숫자들을 permutation 돌려서 순서 바꾸고, 소수인지 2부터 자신-1 수까지 다 나눠보고 소수이면 set에 넣어 중복방지 해줬다.. 풀고나서 다른 사람들 코드 보니 substring 으로 막 깔끔하게 했던데 아직 이해하지 못했다. ㅎ 그리고 미리 짝수 같은 건 코드 안 돌게 방지하면 좋을 듯하다. import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; class Solution { int N; char[] nums; boolean[] select..
프로그래머스 level1 모의고사 소요시간 : 30분 이게 뭐라고 30분이나 걸렸나 싶지만 ,, 껄껄 그냥 미리 사람마다 정답 패턴 배열에 저장해놓고 answers와 쭉 비교하면 된당 정답이면 score 올려서 마지막에 score 배열 정렬하여 ArrayList에 정답자들 add 하고 in[] 배열로 바꿔서 return 했다. import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; class Solution { public int[] solution(int[] answers) { int[][] score = new int[3][2]; for (int i = 0; i < 3;..
프로그래머스 level3 이중우선순위큐 소요시간 : 15분 무식하게 문제가 하라는대로만 푼 거 ㅎ 최소값 제거할 때는 마지막 값 빼고 리스트에 다 넣어서 다시 pq 에 넣었다 ㅋㅋㅋㅋㅋㅋ 마지막에 답 return 할 때는 최댓값은 peek으로 하고 최소값은 전부 다 poll 해서 마지막값했다 최댓값 peek 한 이유는 pq 사이즈가 1이어서 최대==최소 인 경우가 있을까봐.. 그런데 풀고나서 다른 사람들 풀이보이 pq 를 두 개 써서 하나는 최대힙, 다른 하나는 최소힙으로 만들어서 했던데 그게 훨씬 효율적이고 깔끔하고 좋을듯 ㅎㅎ import java.util.ArrayList; import java.util.List; import java.util.PriorityQueue; class Solution ..
프로그래머스 level3 디스크컨트롤러 이상한 코드 import java.util.PriorityQueue; class Solution { static class Job implements Comparable { int request, totalTime; public Job(int request, int totalTime) { this.request = request; this.totalTime = totalTime; } @Override public int compareTo(Job o) { return this.totalTime-o.totalTime; } } static int N; static int[][] JOBS; public int solution(int[][] jobs) { N = jobs.l..