일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 lambda
- 자바 재귀 조합
- 알고리즘
- 재귀
- 재귀함수
- 후위표기
- jquery 필터선택자
- 순열코드
- Java
- jquery 속성선택자
- parseInt()
- 자바 조합 재귀
- 조합 재귀
- 알고리즘 그래프
- 순열 재귀
- jquery dom 계층 선택자
- 상속
- 서로소
- inner class
- Interface
- java Collections.sort()
- 자바 순열 코드
- str to char array
- 자바스크립트 이벤트중지
- 자바
- char to str
- jquery 이벤트 처리
- 자바스크립트 이벤트처리
- 자바입출력
- java 내부 클래스
- Today
- Total
목록분류 전체보기 (278)
유블로그
[프로그래머스] level2 행렬의 곱셈 소요시간 : 43분 행렬의 곱셈을 잘못 알고 있어서.... ^^ 행렬 다시 공부하고 왔다 ^^ 이상하게 기억하고 있었다..ㅎㅎ 행렬곱셈을 안다면 쉬운 문제인듯 로직도 행렬곱셈 하는대로 그대로 짜면 된다 class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int[arr1.length][arr2[0].length]; for (int i = 0; i < arr1.length; i++) { for (int t = 0; t < arr2[0].length; t++) { int sum = 0; for (int j = 0; j < arr1[0].length; j++)..
[프로그래머스] level2 최솟값만들기 소요시간 : 6분 A, B 배열을 sort 한 후 A는 인덱스를 올라가면서, B는 인덱스를 내려가면서 곱한다. A의 최솟값과 B의 최댓값을 곱하는 것을 반복해야 전체 합이 최소가 될 수 있기 때문! import java.util.Arrays; class Solution { public int solution(int[] A, int[] B) { int answer = 0; Arrays.sort(A); Arrays.sort(B); for (int i = 0; i < A.length; i++) { answer += A[i] * B[B.length-1-i]; } return answer; } }
[프로그래머스] level 2 이진 변환 반복하기 소요시간 : 7분 하라는 대로만 하면 되는 문제! 1. s가 "1"인지 체크 2. replaceAll 로 0을 ""로 바꾸기 3. 이전길이 - 지금길이 를 answer[1] 에 더해주기 4. s가 "1"인지 체크 5. Integer.toBinaryString을 통해 이진변환하기 6. answer[0]에 +1 해주기 위의 6단계를 계속 반복한다. class Solution { public int[] solution(String s) { int[] answer = new int[2]; answer[0]++; int prevLen = 0; while(true) { if(s.equals("1")) break; prevLen = s.length(); s = s.r..
[프로그래머스] level2 숫자의 표현 소요시간 : 7분 이 문제는 문제에 나와있는 것처럼 그냥 1부터 다 더해보면 된다! 1+2+3+.... 해서 더한 값이 n을 넘어가면 멈추고 2+3+4+... 다시 시도해본다. 더한 값이 n과 같아지는 경우엔 가짓수를 +1 해준다. class Solution { public int solution(int n) { int answer = 0, sum = 0, start = 1, num = start; while(true) { if(sum == n) { answer++; if(++start > n) { break; } sum = 0; num = start; } else if(sum > n) { start++; sum = 0; num = start; } sum += n..
[프로그래머스] level2 땅따먹기 소요시간 : 45분 아 진짜... level2로 8점 처음으로 받았다 그리고 드디어 프로그래머스 점수가 1300대를 넘었다 감격해서 캡쳐했는데 날렸다 눈물난다. 처음에 N크기 안보고 그냥 dfs문제네 하고 풀었더니 시간초과가 났다. 그래서 N을 봤더니 십만이었다. dfs는 어림도 없었다. 그래서 dp 나 그리디 쪽 일 거라고 생각하고 한참 생각했다....... 아직도 dp 가 익숙하지 않다.. 슬프다 한참 생각하다가 떠올린 방법은,, score 2차원 배열을 만들어서 0행 각 열에 land 점수를 넣어놓고 행을 올리면서 열 4개에 대해 전 행 score 4개와 더해보고 최댓값을 찾는 것이다. 그렇게 하면 마지막 행의 4열 중 제일 큰 값이 정답이 된다. class S..
[프로그래머스] level2 다음 큰 숫자 소요시간 : 5분 Integer의 toBinaryString을 이용하여 1의 개수를 세고, n+1부터 1씩 증가시켜 하나하나 1의 개수를 확인하고 같으면 return 한다. 쉬운 문제다. 그런데 Integer의 bitCount() 메소드를 쓰면 아래의 귀찮은 과정없이 바로 해당 숫자의 1 개수가 나온다.....!! class Solution { public int solution(int n) { Integer N = n; String s = N.toBinaryString(N); int countOne = 0; for (int i = 0; i < s.length(); i++) { if(s.charAt(i) == '1') countOne++; } Integer nu..
[프로그래머스] level2 튜플 소요시간 : 23분 매개변수로 string이 주어져서 substring과 split을 이용해야만 했었다. 하지만 다 풀고 다른 사람 코드를 보니 replaceAll 을 이용하여 {, } 를 모두 없애고 , 로 split 했던데 그거나 이거나 비슷할 듯하다. 그 다음 split된 결과를 integer로 변환하여 배열을 list에 다 넣고 list를 배열 길이순으로 정렬한다. 그래야 중복되지 않는 숫자를 찾을 수 있다. 정렬 후 정답 list에 숫자가 있는지 contains로 확인하고(set의 메소드를 사용해도 될 듯) 없으면 정답 list에 넣는다. import java.util.ArrayList; import java.util.Arrays; import java.util..
[프로그래머스] level2 괄호변환 소요시간 : 1시간4분 문제 중간에 '4-4. u의 첫 번째와 마지막 문자를 제거하고, 나머지 문자열의 괄호 방향을 뒤집어서 뒤에 붙입니다.' 이 말을 u를 역순으로 뒤집으라는 말인줄 알고,,,,,,,,, 제출하면 계속 반만 맞길래 왜지 했는데 괄호 방향을 바꾸라는 게 ( -> ), ) -> ( 이거였다..... 이것때문에 시간을 많이 썼다... 문제 자체는 크게 어렵지 않았다. 문제가 하라는 대로만 해주면 되고(process 함수), 올바른 문자열인지 체크하는 함수(isCorrect)와 u,v 로 나누는 함수(splictIdx)만 생각하면 됐었다. class Solution { public String solution(String p) { return process..