일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 상속
- jquery 속성선택자
- 자바
- java 내부 클래스
- str to char array
- 서로소
- 조합 재귀
- 자바 순열 코드
- java lambda
- 후위표기
- java Collections.sort()
- char to str
- 알고리즘
- 자바 조합 재귀
- 재귀함수
- inner class
- 순열 재귀
- 자바 재귀 조합
- 자바스크립트 이벤트중지
- 순열코드
- Java
- 재귀
- jquery dom 계층 선택자
- 알고리즘 그래프
- 자바스크립트 이벤트처리
- jquery 이벤트 처리
- Interface
- parseInt()
- jquery 필터선택자
- 자바입출력
- Today
- Total
목록알고리즘 (120)
유블로그
[프로그래머스] level2 점프와순간이동 소요시간 : 7분 이 문제는 사실.. 며칠전에 잠시 고민했었던 것.... 모르겠어서 그냥 패스하고 나중에 풀어야지 하다가 오늘 다시 풀었다 오늘은 좀 생각하니 바로 떠올랐다. n이 엄청나게 커서 전부 다 해보는 건 말도 안되고 일단, 최대한 x2 이동 (순간이동)을 해야하니 n이 짝수일 땐 나누기2가 가능하니 그냥 나누고 홀수일땐 이동을 +1만하고 다시 나누기 2를 하면 총 건전지 사용횟수가 나올 것이라 생각들었다. public class Solution { public int solution(int n) { int ans = 0; while(true) { if(n == 1) { ans++; break; } if(n % 2 != 0) ans++; n /= 2; ..
[프로그래머스] level3 멀리뛰기 소요시간 : 7분 종이에 적으니까 규칙이 보이길래 코드 짜봤더니 통과 되었다. n번째 칸은 n-1번째와 n-2번째 칸의 경우를 더하면 나왔기 때문. 왜냐면 한 칸과 두 칸, 움직이는 경우가 2가지니까! 처음엔 문제만 보고 뭔가 dp 문제 아닐까 했는데 풀고나서 다른 사람들 풀이를 보니 dp 풀이도 있고 피보나치 풀이도 있고 다양하구만 class Solution { public long solution(int n) { if(n == 1 || n == 2) return n; long[] arr = new long[n+1]; arr[1] = 1; arr[2] = 2; for (int i = 3; i < arr.length; i++) { arr[i] = ((arr[i-2] ..
[프로그래머스] level2 오픈채팅방 소요시간 : 18분 간단히 map 사용할 줄 안다면 할 수 있는 문제.. record를 모두 돌면서 enter 와 change 때 map.put() 으로 id 와 name 넣어주면 자동으로 생성되거나 변경된다. 이 때 최종 출력은 enter와 leave 만 나오므로 횟수를 count하고 그 count 수 만큼 String 배열 크기 잡는다. 한 번 더 record 를 돌면서 enter, leave 명령에 따른 다른 메세지를 출력하며 그 때 이름은 map의 id 를 이용하여 뽑아낸다. import java.util.Arrays; import java.util.HashMap; import java.util.Map; class Solution { public String..
[프로그래머스] level2 폰켓몬 소요시간 : 3분 set 에 nums 값을 모두 넣어서 nums 크기 / 2 보다 크면 모든 종류를 다 가질 수 있는 것이니 nums크기 / 2 를 반환하고 nums크기 / 2 보다 작으면 중복되는 수가 있어서 최대의 종류가 나온 것이니 set의 사이즈를 반환한다. import java.util.HashSet; import java.util.Set; class Solution { public int solution(int[] nums) { Set set = new HashSet(); for (int i = 0; i < nums.length; i++) { set.add(nums[i]); } if(set.size() < nums.length/2) return set.siz..
[프로그래머스] level2 영어끝말잇기 소요시간 : 7분 차례가 다시 1로 돌아올 때마다 round를 1씩 올린다. 매 차례마다 단어 첫 음절이 앞 단어의 마지막 음절과 동일한 지 체크해야하고 앞에 이미 나왔는 지 체크한다. 위 두 조건 중 하나라도 맞게 되면 그 때의 round와 차례를 answer 배열에 넣고 반환한다. import java.util.HashSet; import java.util.Set; class Solution { public int[] solution(int n, String[] words) { int[] answer = {0, 0}; Set set = new HashSet(); int round = 1, order = 1; for (int i = 0; i < words.len..
[프로그래머스] level2 소수 만들기 소요시간 : 10분 그냥 조합 + 소수 소수는 2 부터 num-1 까지 다 나눠보다가 나머지 0인 거 있으면 소수가 아닌 수. 조합은 그냥 조합코드. 처음에 cnt == N 으로 잘못 적어서 어버버함 class Solution { public int solution(int[] nums) { N = nums.length; selected = new boolean[N]; combi(0, 0, nums); return answer; } boolean isPrime(int num) { for (int i = 2; i < num; i++) { if(num % i == 0) return false; } return true; } int answer = 0; int N; bo..
[프로그래머스] level2 짝지어 제거하기 소요시간 : 1시간 5분 수많은 런타임 에러와 시간초과를 경험했다 정확성만 통과하는 시간초과 코드 버전 3개나 있다 마지막에 최종 통과 직전코드는 stack + queue 를 사용해서 정답이 좀 틀리게 나왔었다. 뒤에서 땡기는 작업을 할 때 순서가 뒤바뀌는 바람에.. 이건 설계를 안 해서 나온 결과,, 그래서 최종 통과 코드는 stack 을 2개 쓰는 방법이다. stack 하나를 pop하고 하나는 peek 해서 같으면 pop하고 다르면 pop 해놓은 애를 다른 stack에 푸시해놓고 비교대상을 바꿔서 하나더 pop하고.. 코드 자체는 어렵지 않다. 시간초과를 피하는 게 어려웠다.. import java.util.Stack; class Solution { pub..
[프로그래머스] level2 N개의 최소공배수 소요시간 : 37분 gcd랑 lcm 까먹어서,, 유클리드 호제법 보느라 오래걸렸다.... 그런데 여기서 포인트는 배열을 sort하여 제일 큰 수와 그 다음 큰 수부터 최소공배수를 구해줘야 편하다. 그래야 큰 값을 함수 매개변수 첫번째로 바로 줄 수 있기 때문. func 가 gcd 구하는 함수 func2 가 lcm 구하는 함수. 배열 크기가 1보다 크다면 0번쨰와 1번째 수의 lcm을 먼저 구하고 그 값을 func2의 첫번째 매개변수로 준다. fun2의 두번째 매개변수는 arr의 다음 인덱스 값. 이걸 arr 끝까지 반복하면 정답이 나온다. 수학을 다 까먹어버려서 나름 어려웠다. import java.util.Arrays; class Solution { pub..