본문 바로가기

Lv27

[Lv.2]연속 부분 수열 합의 개수 각각의 elements 원소를 한자리, 두자리, 세자리....elements.length까지 중복없이 더한 결과값의 갯수를 구하여야 한다. 처음에 원형수열을 이용하여풀고자, elements * 2한 배열을 하나 더 만드려고 했었다. 그러나 좀 생각해보니 elements를 있는 그대로 활용할 수 있었다. 각각의 elements원소에 자신의 다음에 올 수를 반복문을 통해 더해주면, 한자리, 두자리, 세자리 ... length까지 값을 모두 더할 수 있었다. 처음 설계한 방법은 List를 만들어 따로 결과값들을 저장해주었다. if 문을 사용하여, 이미 숫자가 있으면 add하지 않게끔 하였다. 이 방법을 사용하였더니, 시간초과가 뜨게되었다. 그래서 중복을 허용하지 않는 set 자료구조를 사용하여 풀이하였고, 시.. 2023. 2. 22.
[Lv.2]n^2 배열 자르기 처음 내가 설계한 방법은 n값을 바탕으로 n * n의 배열을 만들어 그 안에 수를 모두 채워넣는것 이었다. 그 후, 1차원 배열로 다시 변환하여 left, right의 해당 인덱스만 answer에 값을 넣어주고 return 하는 방법이었다. 그러나 잘 작동하는 것 같지만 절반정도는 메모리초과로 실패가 떳다. 그 후, 설계할 때 생각해보니 각 배열의 좌표 x,y라 생각하였을 때, x와 y값 중 큰 값에 +1 한 값이 2차원 배열에 채워진다는 것이 생각났다. 그러면 위의 모든 작업을 할 필요없지 left부터 right까지 반복문 하나로 answer을 구할 수 있다는 생각이 들었다. 아래의 코드는 정답 코드이고 그 아래는 처음에 시도했던 코드이다. public static int[] solution(int n.. 2023. 2. 15.
[Lv.2]행렬의 곱셈 package Lv_2; public class 행렬의곱셈 { public static 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 j = 0; j < arr2[0].length; j++) { for (int k = 0; k < arr2.length; k++) { answer[i][j] += arr1[i][k] * arr2[k][j]; } } } return answer; } public static void main(String[] args) { int[][] arr1 = new .. 2023. 2. 12.
[Lv.2]괄호 회전하기 package Lv_2; import java.util.LinkedList; import java.util.Stack; public class lv2test { public static boolean chking(LinkedList queue) { Stack stk = new Stack(); if (queue.getFirst() == &#39;]&#39; || queue.getFirst() == &#39;}&#39; || queue.getFirst() == &#39;)&#39;) { return false; } else if (queue.getLast() == &#39;[&#39; || queue.getLast() == &#39;{&#39; || queue.getLast() == &#39;(&#39;) .. 2023. 2. 11.