전체 글 410

[백준 14502번] 연구소- java

문제 설명 1. 연구소의 크기 NxM , 바이러스 2, 벽 1, 빈칸 0을 입력받는다. 2. 바이러스는 위아래양옆으로 퍼지고, 벽으로 막혀있으면 더 퍼지지 않는다. 3. 우리는 벽을 꼭 3개를 세워야 한다. 3. 바이러스가 모두 퍼진 후, 남은 빈칸의 최대 갯수를 츨력하면 된다. 풀이 과정 1. 더 효율적인 방법을 찾고 싶었지만, 결국 매우 비효율적인 방법으로 풀게 되었다. 2. 완전탐색과 BFS를 동시에 사용하였다. 3. 먼저 벽을 3개를 세우는 모든 방법을 구하고, 3개가 세워졌으면 BFS를 진행하면 된다. 4. 그리고 BFS가 끝날 때 마다 최대 크기를 구하면 된다. 코드 import java.util.*; public class Main { public static int xMove[] = {-1..

알고리즘 공부 2021.09.09

java배열 다중 정렬하기

2차원 배열의 정렬의 경우 int arr[] = {{1,1}, {1,4}, {3,4}, {1,2}}; 이렇게 되어있는 배열 arr을 [1,1][1,2][1,4][3,4] 이렇게 배열하려면 Arrays.sort(arr, (o1, o2) -> { if(o1[0] == o2[0]){ return Integer.compare(o2[1], o1[1]); }else{ return Integer.compare(o2[0], o1[0]); } }); 이런 식으로 해 주면 된다. 그러면 만약에 2번, 3번, 4번....이렇게 더 비교하려면 어떻게 할까? Arrays.sort(arr, (o1, o2) -> { if(o1[0] == o2[0]){ if(o1[1]==o2[1]{ return Integer.compare(o2[2..

이론 정리/java 2021.09.06

프로그래머스 위클리 챌린지 6주차 - java

문제 설명 1. 복서의 몸무게, 전적이 주어진다. 2. W(이김), L(짐), N(경기안함) 이고, 경기를 안하면 체크하지 않는다. 3. 승률 - 자기보다 무거운사람을 이긴 횟수 - 자기 몸무게 의 순서로 동률이면 뒤의 것을 고려하여 rank를 return하면 된다. 풀이 과정 1. 이것도 정렬을 사용하면 매우 간단한 문제이다...사실 시간복잡도에서 걸릴 것 같았는데 어째 통과가 되었다. 2. 전체경기수, 이긴수를 구하서 승률 / 자기보다 무거운 사람 이긴 수 / 자기 몸무게를 배열에 저장한다. 3. compare의 로직을 이용하여 간단하게 순서대로 정렬하면 구해진다. 4. 노드별 compare구현하기~ 코드 import java.util.*; class Solution { public int[] sol..

[백준 1912번] 연속합 - java

문제 설명 1. N개의 숫자를 입력받는다. 2. 숫자들의 합을 구해서 최소숫자를 return하면 된다. 3. 최소 1000 최대 1000까지 간다. 풀이 과정 1. DP를 통해 쉽게 구할 수 있다. 2. 계속 숫자가 커지도록 만들기만 하면 부분합들을 구할 수 있다. 3. DP배열에 현재 숫자를 더했을 때 만들어지는 최대 합을 구하면 된다. 그 방법은 이전 숫자가 양수이면 그곳에 지금수를 더하고, 음수면 0에다가 더하면 된다. ex) 2, 3, -6, 3, -2, 4가 주어지는 경우의 합은 -> 2, (2+3), (2+3-6), 3, (3-2), (3-2+4) 앞의 숫자가 0보다 작으면 없애고 그보다 크면 쓰면 된다. 4. 구해진 합들 중 최대값을 return하면 된다. 코드 mport java.util...

알고리즘 공부 2021.09.03

[프로그래머스] N으로 표현 - java

문제 설명 1. 숫자 N과 number이 주어진다. 2. number을 N을 사용해서 만들 수 있는 경우가 여러 가지 있는데, 이 중 최소횟수를 구한다. 3. 8회 초과이면 -1을 return한다. 풀이 과정 1. DP문제인데 나는 DFS랑 최적해를 섞어서 푼것같다.... DP만으로 푸는 방법은 모르겠음...... 2. N을 통해 +-/*를 해서 구할 수 있는 모든 방법을 구한다. 3. 위의 process를 전체 문자열의 길이만큼 진행하면 구할 수 있다. 4. 그리고 N뿐만 아니라 NN NNN 이런것도 가능하다. 참고로 이경우 count는 당연히 하나 늘어날 것이다. 5. 마지막으로 중요한게 8회 초과이면 -1을 리턴하도록 만들면 된다. tip ) 그리고 시간복잡도를 조금이나마 줄이는 방법인데, 어차피 ..

알고리즘 공부 2021.09.02

프로그래머스 위클리 챌린지 5주차 - java

문제 설명 1. 'A' 'E' 'I' 'O' 'I' 다섯글자로 단어를 만들수 있다. 2. 단어 길이는 5개 이하이며, A AA AAA AAAA AAAAA AAAAE ... 이런 순서로 진행된다. 3. 단어가 주어지면, 이게 몇번째 단어인지 return하면 된다. 풀이 과정 1. 문제의 테스트 케이스를 보면 알겠지만, 문자들에 대해 완전탐색을 하나하나 진행하면 절대 안될것이다...안해봤지만 그럴것같음. 2. A로 시작하면 A, AA ..... E로 시작하면 E, EA ....... 이렇게 진행되는데, 이를 통해 수식을 통해 구할 수 있다고 유추 가능하다. 3. A는 1이고, I는 1563인데 이를 통해 E는 782이고 각각 시작하는 문자를 기준으로 781의 간격이 떨어져 있다. 4. A,E,I,O,U 5글..

[프로그래머스] 정수 삼각형 - java

문제 설명 1. 삼각형이 주어진다. 2. 맨 아래까지 삼각형을 하나씩 더해가면서 그 최대값을 구한다. 3. 맨 아래줄에서 최대값을 구해주면 된다. 풀이 과정 1. 간단한 DP 문제이다....이게 왜 level3일까?? 2. 각 삼각형 위치에서 가장 큰 합을 구하는 배열을 만들어 준다. 3. 맨 왼쪽은 무조건 다 왼쪽으로 이동해야 하므로 0, 0부분은 싹다 현재 삼각형 크기와 위의 크기를 더해주면 된다. 7 - 3 - 8 - 2 - 4 (이렇게 왼쪽으로 가는거는 쭉쭉 더해주면 될것이다. 다른 방법은 없다.) 4. n번째 위치의 최대값은 그보다 윗 칸의 왼쪽에 있는 값, 오른쪽에 있는 값중 큰거를 구하면 된다. 5. 이제 맨 아래 위치의 값들 중 최대값을 return하면 된다. 코드 class Solutio..

알고리즘 공부 2021.08.26

프로그래머스 위클리 챌린지 4주차 - java

저번주와 비교도 안되게 쉬운 문제가 나왔다...뭐지..... 문제 설명 1. table로 맨 처음 노드에는 직무가, 이후 노드부터는 그 직무가 선호하는 언어가 주어진다. 2. table의 선호하는 언어의 점수는 table전체 언어의 개수만큼 시작해서 내려갈수록 하나씩 뺸다 ( 예를 들어, 선호언어 6개 중 2번째로 선호하는 언어의 경우 (6-2=4점) 3. languages와 preference의 길이는 같고 해당 languages 점수는 동일 위치 preference가 된다. 4. table언어 선호도 x preference를 구하고, 그 언어 선호도의 총합이 가장 높은 직무를 return한다. 5 동일한 점수의 직무가 있으면 사전순으로 빠른 직업군을 return한다. 풀이 과정 1. 언어들을 짤라서 ..

프로그래머스 위클리 챌린지 3주차 - java

(원래 전부터 풀던건데 테케 3개를 통과 못해서 안되고있었다....바보같이 한줄을 빼먹어서 그랬다. 그래서 다른 공부도 못하고 진도가 느려짐.......) 문제 설명 1. board와 table이 각각 배열로 주어진다. 2. 0은 빈칸, 1은 블록으로 채워진 부분이다. 3. board의 빈 부분을 table의 블록으로 채워주면 된다. 4. 블록은 회전할 수 있고, 뒤집을수는 없다. 빈칸은 하나의 블록으로 딱 맞게 채워야만 한다. 이를 채우면 이렇게 되는 것이고, 답은 '14'를 return하게 된다. 풀이 과정 진짜 힘들게 구했다...풀이 알고리즘 자체는 생각하기 쉬운데, 이를 구현하는 것이 힘들다. 1. 먼저 각각 game_board의 경우는 빈칸(0) , table의 경우는 블록(1) 에 해당하는 것..

Spring : table 'DB명.hiberbate_sequence' doesn't exist 에러 발생

이거 발생하는 이유는 기존에 사용하던 @GeneratedValue @GeneratedValue(strategy = GenerationType.AUTO) 요것들 때문이다. mysql을 사용하여 원래 있던 테이블에 사용하는데, 위의 내용들을 사용하면 테이블을 새로 만들어서 진행한다... 그래서 저 위의 내용을 @GeneratedValue(strategy = GenerationType.IDENTITY) 요렇게 바꾸면 내가 만든 DB를 읽어와서 적기 때문에 저 에러가 안나올 것이다.