Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions leetcode2/1easy/최원준/Q3184.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package Leetcode.최원준;

/*
1. 아이디어 :
이중 포문으로 모든 조합을 확인

2. 시간복잡도 :
O( n*n)

3. 자료구조/알고리즘 :
- / 브루트 포스
*/

public class Q3184 {
class Solution {
public int countCompleteDayPairs(int[] hours) {
int ans = 0;
int n = hours.length;

for (int i=0; i<n; i++) for (int j=i+1; j<n; j++) {
if ((hours[i] + hours[j])%24==0) ans++;
}
return ans;
}
}
}
56 changes: 56 additions & 0 deletions leetcode2/2medium/최원준/Q3446.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package Leetcode.최원준;

/*
1. 아이디어 :
구현 문제.
row, col을 시작으로, 대각선으로 내려가면서 nums를 저장.
nums를 정렬 후, 다시 대각선으로 내려가면서 넣어줌.

2. 시간복잡도 :
O( n*n )

3. 자료구조/알고리즘 :
- / -
*/

import java.util.ArrayList;
import java.util.Collections;

public class Q3446 {
class Solution {
int[][] grid;
int n;
public void sortDiag(int x, int y) {
ArrayList<Integer> nums = new ArrayList<>();
nums.add(grid[x][y]);
int nx = x;
int ny = y;
for (int i=0; i<n; i++) {
if (++nx>=n || ++ny>=n) break;
nums.add(grid[nx][ny]);
}

Collections.sort(nums, (x>=y)? Collections.reverseOrder() : null);

grid[x][y] = nums.get(0);
nx = x;
ny = y;
for (int i=0; i<n; i++) {
if (++nx>=n || ++ny>=n) break;
grid[nx][ny] = nums.get(i+1);
}
}

public int[][] sortMatrix(int[][] grid) {
this.grid = grid;
n = grid.length;

for (int i=0; i<n; i++) {
sortDiag(i,0);
sortDiag(0,i);
}

return grid;
}
}
}
38 changes: 38 additions & 0 deletions leetcode2/3hard/최원준/Q330.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package Leetcode;

/*
1. 아이디어 :
그리디.
cmax는 현재 만들 수 있는 최대 숫자.
nums를 순회하면서, 현재 만들 수 있는 최대 숫자가 num보다 작으면, cmax+1을 만들 수 있는 숫자 추가. 반복.
모든 nums를 순회해도, n보다 작으면, cmax+1을 만들 수 있는 숫자 추가. 반복.

2. 시간복잡도 :
O(log n) n = Integer.MAX_VALUE이고, 2배씩 증가.

3. 자료구조/알고리즘 :
- / 그리디
*/

public class Q330 {
class Solution {
public int minPatches(int[] nums, int n) {
int ans = 0;
long cmax = 0;
for (int num: nums) {
while (cmax+1 < num) {
if(cmax>=n) break;
cmax += cmax+1;
ans++;
}
cmax += num;
}

while (cmax < n) {
cmax+= cmax+1;
ans++;
}
return ans;
}
}
}