일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BFS
- baekjoon
- TDD
- lambda
- 코틀린
- 백준
- back-end
- 자바
- DP
- programmers
- Spring
- 프로젝트
- 네트워크
- Java8
- DFS
- 모던자바
- Brute-force
- backtracking
- LEVEL2
- 자료구조
- OS
- kotlin
- 백트래킹
- java
- 운영체제
- 그래프
- 프로그래머스
- algorithm
- 알고리즘
- 스프링
- Today
- Total
목록알고리즘(Java)/프로그래머스 (18)
요깨비's LAB
class Solution { public int[] solution(int rows, int columns, int[][] queries) { int[] answer = {}; Matrix matrix = new Matrix(rows, columns); int queryCount = queries.length; answer = new int[queryCount]; for(int i=0;i col1; i--) { matrix[row2][i-1] = copyMatrix[row2][i]; if(min > copyMatrix[row2][i]) { min = copyMatrix[row2][i]; } } for (int i = row2; i > row1; i--) { matrix[i-1][col1] = copyM..
import java.util.* class Solution { public int solution(String str1, String str2) { int answer = 0; str1 = str1.toUpperCase(); str2 = str2.toUpperCase(); Map str1Map = new HashMap(); Map str2Map = new HashMap(); setMap(str1Map, str1); setMap(str2Map, str2); double intersaction = getIntersection(str1Map, str2Map); double union = getUnion(str1Map, str2Map); double value = 1; if((int)union == 0 && ..
import java.util.HashMap; import java.util.Map; class Solution { static boolean[] isVisited = new boolean[8]; static String[] characters = {"A", "C", "F", "J", "M", "N", "R", "T"}; static int result = 0; public int solution(int n, String[] data) { int answer = 0; result = 0; for (int i = 0; i < 8; i++) { Map map = new HashMap(); isVisited[i] = true; int index = 0; map.put(characters[i], index); ..
하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 합니다. 이 저울의 양팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같습니다. 또한, 저울의 한쪽에는 저울추들만 놓을 수 있고, 다른 쪽에는 무게를 측정하려는 물건만 올려놓을 수 있습니다. 저울추가 담긴 배열 weight가 매개변수로 주어질 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값을 return 하도록 solution 함수를 작성해주세요. 예를 들어, 무게가 각각 [3, 1, 6, 2, 7, 30, 1]인 7개의 저울추를 주어졌을 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값은 21입니다. 제한 사항 저울추의 개수는 1개 이상 10,000개 이하입니다. 각 추의 무게는 1 이상 1,000,000 이..
재귀를 이용하여 Top-Down이 아닌 Bottom-Up 방식으로 문제를 풀었습니다. 그 이유는, Top-Down으로 풀었을 경우에는 풀었던 문제를 다시 풀어야 하는 비효율이 존재하기 때문에 효율을 생각해서 Bottom-Up 방식으로 풀었습니다. Bottom-Up으로 바꾸니까 이 문제에 한해서 DP가 되버린 것 같기도 하네요 class Solution { int[] dp; public int solution(int n) { int answer = 0; dp = new int[n+1]; dp[0] = 0; dp[1] = 1; if(n == 1) { answer = 1; }else { pibo(2,dp[0],dp[1],n); } answer = dp[n]; return answer; } public void..
[ 문제 ] 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 예를 들면, | 1 | 2 | 3 | 5 | | 5 | 6 | 7 | 8 | | 4 | 3 | 2 | 1 | 로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행의 네번째 칸 (8)은 밟을 수 없습니다. 마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution 함수를 완성해 주세요. 위 예의 경우, 1행의 네번째 칸..
Stack을 이용하여 해결하였습니다. 1. 괄호를 한개 읽어온다. 2. (1) '('인 경우 Stack에 PUSH (2) ')'인 경우 Stack Size가 0이면 false / 0보다 크면 POP 1번으로 회귀 3. 모든 괄호를 읽었으면 Stack을 체크해서 Stack이 다 비어있으면 올바른 괄호이므로 TRUE 스택이 비어있지 않으면 ')'의 갯수보다 '('의 갯수가 많은 것이므로 FALSE import java.util.Stack; class Solution { static Stack stack = new Stack(); boolean solution(String s) { char[] carr = s.toCharArray(); int carrLen = carr.length; for (int i = 0..
처음 아이디어는 n을 이진수로 변환하여 저장하고 n+1의 값들을 이진수로 변환하여 이진수끼리 비교하여 1의 개수가 같은지를 비교하려했습니다. 하지만 이것은 값이 매우 커졌을때 매번 이진수 길이만큼 Brute-Force를 수행하기 때문에 시도하기 전에 답이 없겠다는 판단을 했습니다. 그래서 두번째 아이디어로 n의 값을 DFS연산을 하여 n%2, n/2를 이용하여 1인 경우만 체크하여 1의 개수를 count하여 저장. n의 값을 1씩 증가하여 똑같은 DFS연산을 수행한 count값이 n의 count값이 같은지를 비교하여 같으면 연산을 멈추고 답을 출력하는 방식으로 하였습니다. class Solution { public int solution(int n) { int answer = 0; int count = ..