전체 글 121

[백준 2178] 미로 탐색

미로 탐색문제 설명첫 입력 값으로 N,M을 입력 받는데 각각 미로의 가로와 세로 값이 된다.다음 줄에는 0,1로 붙어서 현재 칸을 방문 할 수 있는지의 여부로 입력된다.(1,1)에서 시작해서 (N,M)에 도달하기 까지의 최적 경로를 구해 출력시킨다.알고리즘먼저 N,M을 입력받고 각각 0,1을 이어서 입력 받는다.bfs함수로 시작위치인 (0,0)을 전달한다.queue에 pair형태로 x,y좌표를 넣고 visited를 활용하여 방문했다는 의미인 1을 대입한다.queue가 빌때까지 반복하는데, 각각 queue에서 front값(x,y) 즉, 현재 위치를 꺼낸다.상하좌우 이동한 좌표값을 계산해보고 이동가능하고 방문이 가능한 경우 방문한다.방문시 visited 를 이용하여 현재 값에서 +1해서 최종 값에 최소 이동..

Algorithm 2021.07.27

[백준 11047] 동전0

동전 0 문제설명 첫 줄에 N,K를 입력 받고 N은 동전의 종류 수 이고, K는 맞추는 금액이다. 최소한의 동전으로 금액을 구성하여 필요한 동전 수의 최소 값을 출력시킨다. 알고리즘 필요한 값들을 입력 받는다. 최대한 빨리 찾기 위해서 오름차순으로 정렬된 동전들을 뒤 부터 조회한다. 금액 K를 동전으로 나누어서 sum에 몫을 저장한다. 나머지를 K에 다시 대입한다. 반복문을 통해서 최소한의 동전을 구한다. #include #include using namespace std; int arr[11]; int main() { int n,k,cnt=0; cin >> n >> k; for (int i = 0; i > arr[i]; for (int i = n-1; n>=0 ; i--) {..

Algorithm 2021.07.27

[백준 2606] 바이러스

바이러스 문제설명 첫 줄(node)에 컴퓨터의 수, 두 번째 줄(num)에 간선의 수가 주어진다. 그리고 연결관계를 입력 받은 뒤, 1번 컴퓨터부터 시작해서 바이러스에 감염된 컴퓨터의 수를 출력시키는 문제이다. 알고리즘 설명 input을 입력받는다. 연결관계를 2차원 배열에 graph[x][y]=1, graph[y][x]=1에 각각 넣어준다. dfs 함수에서 현재 방문 노드를 매개변수로 받고 반복문을 1부터 노드의 수까지 반복하여 연결된 노드를 찾아 재귀적으로 방문한다. 방문할 때 바이러스에 감염된 컴퓨터의 수도 같이 세어준다. #include #include #include #include using namespace std; #define MAX 101 int graph[MAX][MAX]; bool ..

Algorithm 2021.07.27

[백준 2667] 단지번호 붙이기

단지번호 붙이기 문제설명 첫 줄에 주어지는 입력은 지도의 크기(5 node; vector v; for (int i = 0; i > x; for (int j = 0; j < node; j++) graph[i][j] = x[j]-'0'; } for (int i = 0; i < node; i++) { for (int j = 0; j < node; j++) { if (graph[i][j] == 1 && visited[i][j] == 0)//방문 가능한 노드로 재귀 { DFS(i, j); all++;//전체 단지수 측정 v.push_back(cal); } cal = 0;//단지당 집 수 초기화 } } cout

Algorithm 2021.07.27

[JPA] jpa 2일차

JPA Day-2 진도 [생성 api ~ 조회 api] api 개발시 entity를 외부에 노출하거나, 파라미터로 받으면 안된다. entity를 그대로 사용하면 중간에 변동성 때문에 api 호출시 깨질 수 있다. DTO를 파라미터로 사용하여 받는다. 수정 api 개발시 command와 query를 분리하여 개발할 때 유지보수성이 증가한다. entity를 직접 반환하면 안된다 @JsonIgnore annotation을 사용하면 반환 시 없는 경우 나타나지 않는다. 다만 해당 어노테이션을 사용하는 것이 모든 케이스를 막기는 어렵다 DTO를 사용하여 반환해야한다. public Result membersV2() { List findMembers = memberService.findMembers(); //엔티티 ..

Back-end/Spring 2021.07.27

[JPA] jpa 1일차

JPA Day-1 진도 [생성 api ~ 조회 api] api 개발시 entity를 외부에 노출하거나, 파라미터로 받으면 안된다. entity를 그대로 사용하면 중간에 변동성 때문에 api 호출시 깨질 수 있다. DTO를 파라미터로 사용하여 받는다. 수정 api 개발시 command와 query를 분리하여 개발할 때 유지보수성이 증가한다. entity를 직접 반환하면 안된다 @JsonIgnore annotation을 사용하면 반환 시 없는 경우 나타나지 않는다. 다만 해당 어노테이션을 사용하는 것이 모든 케이스를 막기는 어렵다 DTO를 사용하여 반환해야한다. public Result membersV2() { List findMembers = memberService.findMembers(); //엔티티 ..

Back-end/Spring 2021.07.27

[백준 1012] 유기농 배추

유기농 배추 (DFS) 문제설명 dfs알고리즘을 사용한 문제로 노드간의 연결된 관계를 파악하여 그 갯수를 세는 문제이다. 알고리즘 순서 테스트케이스(T)와 밭의 가로세로 크기(M,N), 간선의 갯수(K)를 입력 받는다. 연결관계를 2차원 graph에 1로 표현한다. 예) 2,3 -> graph[2][3]=1 graph를 반복해서 연결관계가 1이고 현재 방문하지 않은 노드를 방문한다. dfs함수에서 방문했다는 visited[x][y]=1 표현으로 방문 여부를 체크하고 현재 노드에서 상,하,좌,우 연결관계를 재귀적으로 확인한다. 재귀적인 확인을 마친뒤 다시 main 함수로 돌아오면 answer값을 증가시킨다. 여러번 테스트를 위해서 vector에 값을 담아 놓았다. #include #include #incl..

Algorithm 2021.07.27

[백준 1260] DFS와 BFS

DFS와 BFS문제설명기본적인 DFS&BFS를 구현한다.이때, 정점의 갯수(N) 간선의 갯수(M), 그리고 시작노드(V)를 입력 받는다.dfs와 bfs를 수행하고 난 노드 방문 순서를 출력시킨다.알고리즘 순서DFS의 경우 현재 방문한 노드의 인덱스를 매개변수로 전달반복문을 통해서 방문하지 않았고 연결되어 있는 노드를 재귀적으로 방문한다.BFS의 경우도 동일하고 queue에 현재 방문한 노드를 넣는다.반복문을 통해서 queue가 비어있을 때 까지 맨 앞의 노드를 끄내고, 그 노드와 인접했지만 방문하지 않은 노드를 방문한다.#include #include #include #include #include using namespace std;#define MAX 1001int graph[MAX][MAX];int..

Algorithm 2021.07.27

[프로그래머스] 큰 수 만들기(Greedy)

큰 수 만들기 문제설명 K만큼 문자열의 숫자를 지워서 가장 큰 수를 만든다. number 문자열을 통해 input이 정해진다. K개의 수를 지워서 number의 순서 변환 없이 가장 큰 수를 만들어내야한다. 첫 시도!! 처음에는 가장 작은 수 들을 지워서 만들면 된다고 생각했는데, 그런 경우에는 자리수를 고려하지 않아서 가장 큰 수가 생기지 않는다. 따라서 앞부터 수를 읽으면서 가장 큰 수를 찾아서 답을 만드는 방식으로 진행해야한다. #include #include #include #include #include #include #include using namespace std; string solution(string number, int k) { string answer=""; int remaind..

Algorithm 2021.07.27

[SQL] GROUP BY 한 결과로 UPDATE 하는 법

기존 서비스 운영 중 DB를 업데이트 해야할 때 서비스 진행중에 새로운 서비스를 도입해서 기존의 사용자에게도 적용해야할 때, 조건을 걸고 일괄 수정이 필요할 때가 있다. 이번의 경우에는 id로 group by절을 사용하여 나온 결과의 수를 세고 그 결과대로 컬럼 두개를 업데이트 시켜야 했다 1. UPDATE가 필요한 조건의 대상자 찾기 user의 id로 그룹화 하여 해당 유저가 작성한 글의 수를 센다 select count(*) as CNT, user_id from feedlist group by user_id having CNT>=7; # Feedlist라는 테이블에서 user_id로 그룹화 하고 반환되는 튜플의 수를 세는데, 7개 이상일 때만 나오도록 한다. group에 대한 조건을 세기 위해서는 w..

Back-end/SQL 2021.07.27