일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- EC2
- 날짜일수
- 이클립스
- Eclipse
- 자바
- 알고리즘
- 18222
- 프로그래머스
- 백준
- Java
- SpringBoot
- documentationpluginsbootstrapper
- 호석이두마리치킨
- 20055
- Error fetching remote repo 'origin'
- 소가길을건너간이유6
- 14466
- 별자리 만들기
- 21278
- 투에모스문자열
- 이산수학
- jenkins
- dockercompose
- 설정
- 2167. 2차원 배열의 합
- Error
- CMD
- docker
- to display the conditions report re-run your application with 'debug' enabled
- 2108_통계학
- Today
- Total
목록프로그래머스 (13)
계단을 오르듯이
상하의 알파벳은 수월했으나 좌우의 커서이동 부분이 힘들었다. 커서이동을 최소로 하기 위해 A가 연속되는 부분의 연산을 해주어야 한다. 또한 가장 key-point는 BBBBAAAAAABB 라고 가정하면, 이 경우에는 뒤를 탐색한 후 다시 앞으로 돌아오는 경로가 가장 적은 수의 커서이동이 된다. 그 이유는 커서를 이동을 하여 연산을 한 후 다시 방향을 돌려야 할 때 커서로 이동한 만큼 다시 반대방향으로 돌아오는 이동을 해야하기 때문이다. 즉 앞에서 시작하면 (좌 -> 우를 시작으로) 3번을 갔다가 다시 3번을 돌아와 2번을 가는 경우는 8번의 커서이동이 되고, 뒤에서부터 앞으로 오는 경우는 2번으로 맨 뒤 오른쪽으로 가서 다시 2번으로 앞으로 돌아오며 3번의 커서이동을 더해 커서이동이 마무리 된다. 이 경..
h의 범위가 될 수 있는 최대의 범위는 citations 배열의 길이만큼이므로 0부터 길이까지만큼 탐색한다. 배열은 오름차순으로 정렬한 후 해당 배열의 큰 수부터(뒤에서부터) 탐색하여 해당 수만큼의 개수를 만족하면 빠져나오고 answer의 값을 갱신해주고, 더 이상 만족하지 못할 시 모든 탐색을 종료한다. 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 import java.util.*; class Solution { public int solution(int[] citations) { int answer = 0; int len = citations.length; Arrays.sort(citations); for(int i=0;i=0;..
yellow를 기준으로 일단 가로 세로의 길이를 구했다. 가로, 세로 모두 yellow를 기준으로 전체 가로, 세로길이는 2씩 커진다. 가로 세로를 구하기 위해서는 약수를 구하는 방식으로 1부터 루트N까지 연산을 통해 반복되지 않게 하였고, 가로의 길이가 항상 크므로 i가 세로가 되도록 하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Solution { public int[] solution(int brown, int yellow) { int[] answer = new int[2]; for(int i=1;i
이 문제는 자료구조를 사용하지 않고 2중 for문을 사용해도 통과하는 문제이다. 시간복잡도 상 10,000 * 10,000 이라 빡빡하거나 안될 줄 알았는데 통과가 되는 것 같다. 스택의 자료구조를 사용하였다. 인덱스를 스택에 넣고, 해당 인덱스의 값이 스택의 top()보다 작으면 인덱스의 차로 계산을 하고, 현재 top의 계산이 끝나도 스택에 존재하는 모든 top과의 비교를 통해 주식의 하락세를 확인해야한다. 그리고 무조건 모든 인덱스는 스택에 한번씩은 들어가 다음 연산을 수행한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import java.util.*; class Solution { public int[] solution(int[] prices) ..
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 import java.util.*; class Solution { public int solution(int bridge_length, int weight, int[] truck_weights) { int answer = 0; int possibleWeight = weight; Queue q = new LinkedList(); for(int i=0;i= nowWeight && q.size()
문제를 이해하면 이렇다. 대기 목록에서 하나의 문서를 순서대로 빼어, 그 문서가 최고의 우선순위이면 그대로 프린트를 한다. 그 프린트의 위치가 일치하면 바로 끝. 그렇지 않으면 프린트하는 순서를 알아내기 위해 순서를 나타내는 변수를 올려준다. 만약 최고의 우선순위가 아닐 시 바로 뒤로 줄을 서야하고 그 외에는 변화할게 없다. for-each의 for문을 이용하여 큐에 존재하는 모든 원소와 우선순위를 비교할 수 있었다. 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 32 33 34 35 36 37 38 39 40 41 import java.util.*; class Solution { public int ..
적절한 자료구조를 생각해야했고, 나는 HashMap과 ArrayList를 이용하였다. 적절한 오름차순의 정렬을 통해 순차적으로 문제를 풀어나갔다. 역시 알고리즘은 맞나..? 고민하지 말고 우선 해보는 시도가 나아가는 발걸음이다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869import java.util.*; class Solution { public int[] solution(String[] genres, int[] plays) { int[] answer = {}; int len = genres.length; Map ma..