일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 dom 계층 선택자
- 재귀함수
- 순열코드
- jquery 필터선택자
- 재귀
- 상속
- 서로소
- Java
- 자바 조합 재귀
- parseInt()
- java 내부 클래스
- 알고리즘
- str to char array
- 자바 재귀 조합
- 조합 재귀
- 자바스크립트 이벤트중지
- inner class
- 순열 재귀
- Interface
- jquery 속성선택자
- 자바
- jquery 이벤트 처리
- 자바 순열 코드
- 알고리즘 그래프
- 자바스크립트 이벤트처리
- 후위표기
- char to str
- java lambda
- 자바입출력
- java Collections.sort()
- Today
- Total
목록알고리즘 (120)
유블로그
[프로그래머스] level2 JadenCase문자열만들기 쉬운 문제다. 하라는 대로 하면 된다. 그런데 처음에 내가 split 함수로 공백을 무조건 한 개씩만 두는 걸로 해버려서 시간이 꽤 걸렸다. 주어진 문제에 충실하게 풀자!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 내 맘대로 생각하기 금지 class Solution { public String solution(String s) { StringBuilder answer = new StringBuilder(); char[] arr = s.toCharArray(); for (int i = 0; i < s.length(); i++) { if(arr[i] ==..
[프로그래머스] level2 수식 최대화 소요시간 : 1시간 26분 아 너무 힘들군 처음에 그냥 string 으로 하다가 마이너스 같은 것들 때문인지 제시된 테케만 맞고 제출하면 반 정도는 틀렸다. 에러를 고치느라 한 시간이 훌쩍 넘어서 그냥 약간 힌트를 보고 결국엔 그냥 코드를 다시 짰는데 List 로 숫자와 연산자를 나눠서 계산했다. 찾은 연산자 인덱스가 1이라면 숫자 List 인덱스 1과 2의 값을 연산하면 되고, 연산자 List에서는 인덱스 1을 remove한다. 마지막에 남은 numList.get(0) 으로 MAX를 갱신한다. 값은 항상 Long 으로! 이 방법으로 하니 거의 10~20분만에 할 수 있었다. 휴..................................................
[프로그래머스] 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..