일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- 14466
- 알고리즘
- 자바
- SpringBoot
- CMD
- 2108_통계학
- documentationpluginsbootstrapper
- EC2
- 호석이두마리치킨
- Eclipse
- 투에모스문자열
- 18222
- 프로그래머스
- 이클립스
- dockercompose
- 별자리 만들기
- Error
- 21278
- 20055
- jenkins
- 이산수학
- to display the conditions report re-run your application with 'debug' enabled
- docker
- 날짜일수
- Error fetching remote repo 'origin'
- 소가길을건너간이유6
- 설정
- 2167. 2차원 배열의 합
- Java
- Today
- Total
목록Java (58)
계단을 오르듯이
규칙을 찾아보면 1부터 N까지일 경우 순서대로 홀수는 계속해서 버려지고 짝수는 뒤로 간다. 이 규칙을 찾아 for문을 돌렸고, 큐를 만들어 짝수는 큐에 넣어주었다. 그 후 while문을 통해 버림과 뒤에 겹침의 연산을 처리했고, while문의 연산은 짝수를 기준으로 하였으므로, 홀수에서는 무조건 while문을 들어가기 전에 한번 뒤로 붙임 처리를 해주어야 한다. while문 안에서도 연산 중 1개의 카드만 남게될 시 while문을 종료하고 그 카드를 출력해주어야 한다. 또한, N이 1일 경우는 위의 연산이 필요하지 않고, 무조건 1개의 카드가 존재하므로 바로 1을 리턴해주었다. 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..
가장 최소가 될 수 있는 값만 방문처리를 통해 구하면 성공할 것 같지만, 성공할 수 없다. 그 이유는 방문처리와 함께 가능한 최소의 값만을 구하는 것이 절대 최소가 될 수 없기 때문이다. 이유는 첫번째 최소의 값으로 방문처리를 하면 그 위치와 겹치는 곳을 제외한 곳에서 최소를 찾게 되기 때문이다. 그렇게 되면 한곳은 최소가 될 수 있지만 그 곳의 최소만을 보고 나머지를 생각하게 되면 나머지는 최대가 될 수도 있기 때문이다. 만약 첫번째 최소가 1이고, 그 곳을 제외한 곳의 최소가 99 라면 합은 100이다. 이 문제는 전체의 값을 최소가 되기 위함이므로 모든 경우를 고려해 적용해보는 완전탐색이 필요했다. 즉, 한곳에서는 최소가 아닌 값을 골라도 전체의 값이 최소가 될 수 있게 만들어야 한다. 그렇게 되면..
해당 폭탄이 터지기 전에 1초의 간격으로 모든 곳에 폭탄을 설치할 시간이 주어진다. 현재 시작을 1초로 하므로, 짝수의 시간에는 모든 곳에 폭탄이 설치된 배열이 정답이 된다. 홀수일 경우, 이제 계산을 해야주어야 하는데 이중 for문을 이용했다. 순서대로 배열의 값을 확인해 폭탄의 위치가 아닐 시 폭탄으로 바꿔주고, 폭탄일 시 폭탄의 연산을 해준다. 여기서 이미 폭탄의 영향으로 바뀌어진 부분을 다시 바꾸어줄 수 있는 영향이 존재하므로 방문처리를 해주었다. 폭탄의 연산에서는 방문처리에 상관없이 폭탄의 연산을 해주었고, 전체 폭탄은 동시에 터지는 것을 원칙으로 하기에 4방향으로 폭발할 때의 계산을 하기 전 그 위치가 다음 연산에 영향을 주는 오른쪽과 아래의 위치가 되어질 때는 그 부분을 if문을 통해 제외하..
적절한 자료구조를 생각해야했고, 나는 HashMap과 ArrayList를 이용하였다. 적절한 오름차순의 정렬을 통해 순차적으로 문제를 풀어나갔다. 역시 알고리즘은 맞나..? 고민하지 말고 우선 해보는 시도가 나아가는 발걸음이다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869import java.util.*; class Solution { public int[] solution(String[] genres, int[] plays) { int[] answer = {}; int len = genres.length; Map ma..
우선 예산을 오름차순 정렬을 하여 제시된 총액으로 정해진 처음 상한가를 기준으로 연산을 시작한다. 상한액보다 작을 경우 다른 곳에 나누어 줄 수 있는 돈이 더 생기게 되는 것이므로 그 돈을 활용해 다시 상한액을 측정하였다. 모든 경우에서 상한가보다 낮을 경우가 있을 수 있기 때문에 상한가보다 낮을 경우 출력해야할 결과값인 최대 예산을 계속 갱신해주었다. 그 뒤 상한가보다 높은 가격의 예산이 나오게 되면 위에서 정렬을 이미 했기 때문에 그 뒤로부터는 계속해서 상한가보다 높은 예산이 나오게 되므로 예산의 가격이 아닌 한정가와 현재까지 최대값 예산과의 max비교를 통해 결과값을 갱신한 후 더이상의 연산은 모두 한정가와 같으므로 for문을 break 빠져나오게 했다. package november.second;..
평소처럼 dfs/bfs로 풀었지만 시.간.초.과.. 500 * 500 이라서 될 줄 알았지만, 모든 인덱스 위치에서 모든 경우를 다 계산해야 하기에 최대 500 * 500마다 500 * 500이 될 수 있으므로 250000 * 250000 가 되어 시간초과가 당연히 발생되는 것이다. 시간을 줄이고자 방문해서 도착지점에 도착했던 경로는 당연히 나중에도 그 길을 통해 도착이 보장되므로 그 길을 다시 확인하는 수를 줄여야겠다고 생각했다. dfs의 return값을 통해 방문과 함께 갈 수 있는 길의 수를 구하기 위해 dp와 dfs를 함께 이용해 풀었다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647pack..

시리얼 번호는 배열을 아는 것이 핵심!!!!! 이거면 끝이다. * comparable vs compator 두 개의 방법을 적절한 곳에 적용하면 된다. implements Comparable vs new Comparator() compareTo(o1) vs compare(o1,o2) 의 차이를 나타내고 정렬에 대해 정리하며 완벽하게 구현할 수 있는지 알아보는 문제였다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152package november.second; import java.io.BufferedReader;import java.io.InputStreamReader;import ..
안전영역의 최대를 위해서 바이러스의 부분을 최소로 해야한다. 문제의 특성상 벽의 위치를 모두 고려해 여러 번 바이러스 연산을 통해 영역을 구해야하므로 따로 바이러스 위치를 저장하는 배열을 만들어 바이러스의 퍼지는 연산 전 queue를 채워 bfs를 연산할 수 있게 하였다. 벽의 위치는 조합의 연산을 이용하였고, 2중 for문에 대한 조합의 연산을 위해 조건문이 생겼다. 해당 조건문은 조합의 연산에서 그 전에 벽을 설치한 앞의 부분은 고려하지 않고 그 뒤의 배열 위치부터 고려하기 위함이다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; ..