전체 글 70

[백준] 1715번 카드정렬하기 자바 코드 & 문제풀이 방법

[ 백준 ] 1715번 카드정렬하기 자바 코드 & 문제풀이 방법 문제설명 생각해야 할 요소 1. 처음엔 문제가 이해가 잘 안갔다. 문제에서 정렬된 두 묶음의 숫자카드가 있다고 나와있는데, 이 말이 입력값이 정렬이 된 상태로 들어온다는 건가? 헷갈렸다. 2. 문제를 읽다가 생각해낸 풀이는, 최소한의 비교 횟수가 나오려면 숫자가 작은 것들끼리 더해야 한다는 한다는 것이었다. 간단하게 생각해서 처음 나온 숫자랑 두번째 나온 숫자는 N-1 번 나올거고, 그 다음은 N-2, N-3 나오는거 아닌가? 해서 풀었다. 결과는 틀렸습니다! 그 이유는, 다른 예시를 보면 이해가 확실히 갈 것이다. 백준에서 주어진 예시에는 (10 + 20 ) < 40 이라 한번에 캐치하기 어려웠을 수도 있다. 이 문제의 패턴은 더해진 숫자..

알고리즘/백준 2020.11.10

[백준] 연구소 14502번 - JAVA

[백준] 연구소 14502번 - JAVA 문제설명 문제풀이과정 DFS로 벽 3개를 찾는다. BFS로 바이러스를 퍼뜨린다. 안전구역의 개수를 구한다. 안전구역의 개수의 최대값을 구한다. 소스코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Lab_14502 { static int N, M, answer = 0; static int[] dx = {0, 0, 1, -1}; static int[] dy = {1, -..

알고리즘/백준 2020.11.07

[백준] 경쟁적 전염 18405- JAVA

[ 백준 ] 경쟁적 전염 18405- JAVA 문제풀이 문제설명 생각해야할 요소 1. 생각해줘야 할 포인트는 바이러스 번호가 낮은 숫자부터 시작하고 덮어쓰기가 안된다는 것이다. cf) BFS 문제인가? 맨처음 문제를 봤을 때 BFS라고 생각했지만, 문제를 풀다보니까 맞나? 싶기도 하고... 문제풀이 방법 1.사실 무척 간단하다. map을 순회하면서 내가 전이할 virus의 번호와 일치하는 것을 Queue에 몽땅 집어 넣어준다. - 큐에 들어있는 값의 상하좌우를 보고, map의 범위에 벗어나는것, 이미 그 칸을 점령하고 있는 바이러스가 있을 경우를 제외해주고 virus를 넣어주면 된다. 2. 시간이 오래 걸리지 않기 위해서 X,Y 위치에 값이 0이 아니라면 루프를 빠져나갈 수 있도록 했다. 소스코드 imp..

알고리즘/백준 2020.11.05

[백준] 치킨배달 15686 - JAVA

[백준] 치킨배달 15686 - JAVA 풀이 문제설명 생각해야할 요소 1. 치킨집 중에서 최대 M 개를 고른다. ( M개보다 적게 고를 수 있다. ) 2. 치킨집을 어떻게 고를 것인가? ( 백트래킹, 조합 ) 3. 도시의 치킨 거리는 어떻게 구할 것인가? 문제풀이방법 1. 치킨집 중에서 최대 M 개를 고른다. ( M개보다 적게 고를 수 있다. ) - 이 부분은 문제를 풀다가 놓친 부분이다. ( 그냥 M개를 고르면 되는 줄 알았다. ) - 최대 M개라 하면, M보다 작은 수의 치킨집을 골라도 된다는 말이다. - 생각을 했을 때, M보다 작게 뽑게 된다면 치킨과 집간의 거리가 늘어날 것이고 결국 도시의 치킨 거리가 가장 작게 될지 구하지 못할 것이다. - 결국, 무조건 M개를 뽑아야 함을 알 수 있다. 2..

알고리즘/백준 2020.11.05

[프로그래머스] 무지의 먹방 라이브 - JAVA

[프로그래머스] 무지의 먹방 라이브 - JAVA 문제설명 문제풀이 방법 일단, Collection.sort를 사용해서 먹는 시간이 가장 빠른 순으로 정렬 while문을 통해 빠른시간 순서대로 값을 빼내서 그 크기만큼 곱해준다. 코드 : ( foods.get(0).time - cnt ) * n while문의 조건식을 보면, 남은 k번을 돌아가는 데 있어, foods의 size가 더이상 줄어들지 않는 크기를 찾아낼 수 있다. 그렇게 하면 더이상의 작업을 할 필요없이 index를 구해주면된다. Food 클래스의 num(index) 순서대로 정렬하고, ( k % n ) 를 통해 num의 값을 찾아주면 된다. 내가 계속 틀렸던 이유 ArrayList를 사용했다. 사실, ArrayList를 사용한다고 문제가 발생하..

[백준] 2428번 표절

[백준] 2428번 표절 문제설명 문제만 보면, 상당히 간단한 문제여서 금방 풀 수 있을 것 같았는데,, 늪에 빠져서 한참을 헤맸다ㅠㅅㅠ 문제풀이 방법 1. 두 파일을 비교하면서 i≠j이고, size(Fi) ≤ size(Fj)이면서, size(Fi) ≥ 0.9 × size(Fj) 이 조건을 만족시키는 쌍일 경우만 검사를 하면 된다. 2. 하나씩 비교해가면서 탐색해도 되지만, n의 최대 크기가 100,000 이기 때문에, n^2 탐색을 하게 되면 시간초과가 날것이다. 3. 그렇기 때문에 오름차순 정렬 후, 이분탐색을 사용해서 조건을 만족시키는 최대 값을 찾으면 된다. Example) 예를들어, 조건을 만족시키는 최대값의 index가 3이라고 가정해보자. 그렇다면, 비교해야할 index 0 을 제외하고 in..

알고리즘/백준 2020.11.02

[백준] 1068번 트리

[백준] 1068번 트리 문제 설명 입출력 문제풀이 방법 트리가 주어지고, 삭제할 노드에 연결되어 있는 노드를 모두 제거한 후 리프노드의 개수를 출력하면 된다. 1. 주어진 노드가 어떤 루트 노드와 연결되어 있는지 정보를 저장할 arr 배열 하나를 선언한다. 2. 삭제할 노드 R 을 입력받은 후 delete(R) 을 통해 R에 연결되어 있는 노드를 모두 삭제한다. - 삭제가 된 노드인지를 판별하기 위해 boolean값의 node 배열을 사용했다. - 삭제가 된 노드면 node[i]의 값을 true로 바꾸게 된다. - 삭제를 하는 방법은 BFS방법을 통해 연결된 것을 모두 지우도록 했다. 3. 삭제가 끝나면 리프노드를 찾아야 한다. - 삭제되어진 노드는 제외하고 ( 즉, node가 true인 것은 제외 )..

알고리즘/백준 2020.10.27

[프로그래머스] 쿼드압축 후 개수 세기 - JAVA

[프로그래머스] 쿼드압축 후 개수 세기 - JAVA 문제 설명 풀이과정 1. 구역을 정해서 그 구역이 0으로 채워있으면 0으로 압축, 1으로 채워져있으면 1로 압축하는 과정 1-1. 만약, 모두 똑같은 숫자로 되어 있다면 zeroCnt or oneCnt를 증가시킨다. 1-2. 압축되지 않는다면 2번으로! 2. size/2 만큼 잘라서 재귀호출을 하여 1번의 과정을 반복한다. 2-1. size/2를 자르고 포인트는 dx, dy를 아래와 같이 설정하는 것이다. static double[] dx = {0, 0, 0.5, 0.5}; static double[] dy = {0, 0.5, 0, 0.5}; 내가 놓쳤던 부분 - 전체가 똑같은 0이나 1로 채워져있는 경우를 반영해주지 않았다! 소스 코드 import j..

[Spring] Spring boot Assert

assertThat은 무엇인가??? 오류 : 위에 restaurant 객체를 생성하고, asserThat에 숫자를 다르게 맞춰주니까 AssertionError가 발생했다. AssertionError란 무엇인가? 먼저 Assert 부터 알아보자! - Junit 4.4 부터 assertThat 메서드 추가 - assertThat(actual, is(expected)); // actual 과 expected가 같다. // 같지 않기 때문에 assertionError가 난 것 - 메세지 부분에 Expected : is bus was 이 부분을 보면 무엇이 잘못되었는지 한눈에 확인할 수 있다.

SERVER/Spring Boot 2020.09.22

[Spring] Spring boot Project - 레스토랑 예약 사이트 만들기 (들어가기)

REST API - Resource에 대해 처리하는 방식 ( CRUD ) - GET, POST, PUT, DELETE, UPDATE APIs - 가게 목록 : GET /restaurants - 가게 상세 : GET /restaurants/{id} - 가게 추가 : POST /restaurants - 가게 수정 : PATCH /restaurants/{id} - 가게 삭제 : DELETE /restaurants/{id} TDD(Test Driven Development) 테스트 주도 개발 목표 주도 개발 올바르게 작동을 하는지? 깔끔한 코드로 작성했는지? Refactoring → Test Code 필요 Routing 1. Collection - Read, Create - 도메인 - http://host/re..

SERVER/Spring Boot 2020.09.20