일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- geometry
- array
- database
- implement
- Matrix
- Tree
- bit manipulation
- 구현
- 코딩테스트
- Stack
- 코테
- two pointers
- 파이썬
- Number Theory
- Binary Tree
- java
- greedy
- Counting
- Data Structure
- Math
- Method
- hash table
- Binary Search
- 자바
- dynamic programming
- simulation
- string
- sorting
- Class
- SQL
- Today
- Total
목록sorting (90)
코린이의 소소한 공부노트

어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 1. 입력 - N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 2. 출력 - 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. - 그 수가 존재하지 않는다면, -1을 출력하라. 3. 예제 4. 코드 import java.util.*; class Main{ public static void main(String[] args){ char[] nums = new Scanner(System.in..

N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다. 각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다. 1. 입력 - 첫째 줄에 정수 N이 주어진다. 다음 N개의 줄에는 각 로프가 버틸..

인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 P_i분이다. 줄을 서 있는 사람의 수 N과 각 사람이 돈을 인출하는데 걸리는 시간 P_i가 주어졌을 때, 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구하는 프로그램을 작성하시오. 1. 입력 - 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. - 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) 2. 출력 - 첫째 줄에 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 출력한다. 3. 예제 4. 코드 import java.util.*; impor..
1. Problem - 그리디 알고리즘을 이용하여 거스름돈으로 지급할 동전의 최소한의 개수를 구해보자. - 그리디 알고리즘은 가장 큰 것부터 또는 가장 작은 것부터 선택하며 최적의 답을 찾아가는 알고리즘으로, 탐욕법이라고도 불린다. - 그리디 알고리즘은 정렬, 다이나믹 프로그래밍과 함께 사용되는 경우가 대다수이다. - 그리디 알고리즘이 항상 최적의 답을 도출하지는 않는다. 2. Input 1) 거스름돈 액수 3. Output 1) 거스름돈을 500원, 100원, 50원, 10원짜리 동전을 이용해서 지급할 때 필요한 동전의 최소 개수 4. Example 거스름돈으로 지급해야 하는 금액: 947원 // 500 < 947 < 1000 500원: 1 // 남은 금액: 447원 // 400 < 447 < 500 ..
1. Input 1) int[] nums 2) int[] queries 2. Output 1) 다음을 따라 만든 배열을 반환 - i번째 요소에 nums의 요소들의 합이 queries[i] 이하인 nums의 부분 배열 중 길이가 가장 긴 것을 찾아 그 길이를 저장 - 부분 배열은 nums상에서 연속적일 필요는 없다. 3. Constraint 1) n == nums.length 2) m == queries.length 3) 1 4 5. Code 1) 첫 코드(2023/06/26) class Solution { public int[] answerQueries(int[] nums, int[] queries) { int[] ans = new int[queries.length]; Arrays.sort(nums); ..

산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 1. 입력 - 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. - 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 2. 출력 - 첫째 줄에는 산술평균을 출력한다. 소수점 이하 첫째 자리에서 반올림한 값을 출력한다. - 둘째 줄에는 중앙값을 출력한다. - 셋째 줄에는 최빈값을 출력한다. 여러 개 있을 때에는 최빈값 중 두 번째로 작은 값을 출력한다. - 넷째 줄에는 범위를 출력한다. 3. 예제 4...
1. Input 1) int num 2. Output 1) num의 각 자리 숫자들끼리 다음 조건에 따라 순서를 바꿨을 때 만들 수 있는 가장 큰 숫자를 반환 - 짝수는 짝수끼리, 홀수는 홀수끼리 자리를 바꿀 수 있다. - num의 각 자리 숫자가 ‘홀짝짝홀’이었다면, 순서를 바꾸고 만든 숫자도 ‘홀짝짝홀’이어야 한다. 3. Constraint 1) 1 0){ int n = num%10; num /= 10; if(n%2==0) even.add(n); else odd.add(n); } odd.sort(Comparator.naturalOrder()); even.sort(Comparator.naturalOrder()); int a = 0, b = 0; StringBuilder sb = new StringBui..
1. Input 1) int[] nums (0-indexed) 2. Output 1) nums에서 인덱스가 홀수인 것과 짝수인 것을 나눠서 정렬한 결과를 반환 - 인덱스가 홀수인 것 끼리는 내림차순으로 정렬한다. - 인덱스가 짝수인 것 끼리는 오름차순으로 정렬한다. 3. Constraint 1) 1
1. Input 1) int[] cost - cost[i] = i번째 사탕의 가격 2. Output 1) 모든 캔디를 사는 데 필요한 최소 비용을 반환 - 캔디를 a, b 2개 사면 3번째 사는 캔디는 무료이다. - 이때 무료로 살 수 있는 캔디의 가격은 a와 b의 가격 이하여야 한다. 3. Constraint 1) 1

1. Problem - 제시된 그래프를 보고 노드의 순서를 정해보자. - 위상 정렬은 순서가 있는 작업을 차례대로 수행해야 할 때 그 순서를 결정하기 위해 사용하는 알고리즘이다. - 위상 정렬에 이용되는 그래프는 싸이클이 없는 방향 있는 그래프(Directed Acyclic Graph, DAG)이다. 2. Input 1) int[][] graph - 그래프의 간선을 표시한 2차원 배열 - graph[i][j]: i번에서 j번으로 연결되어있다는 뜻이다. 3. Output 1) 그래프의 노드들이 위상 정렬된 결과를 출력 4. Example // 각 노드들의 연결을 확인한 후, 노드별로 진입차수를 계산한다. // 진입차수란 노드로 들어오는 간선의 개수를 말한다. indegree=[0, 1, 1, 1, 1, 2..