분류 전체보기 120

[백준 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

[GIT] GIT 커밋취소, gitIgnore

GIT에 원치않는 개인정보가 올라갔을 때 ignore파일에 파일명을 설정했는데도 실제로 그냥 올라가 버리는 경우가 있다. 따라서 이럴땐 커밋내용을 지우고 다시 gitignore 파일을 설정해서 올려서 개인정보를 지워야한다. 아래와 같은 순서로 진행하면 다시 올릴 수 있다. 1. GIT 커밋 취소 commit 내용 취소 git log #커밋 이력을 확인한다 git reset HEAD^ #이전의 커밋내용 하나를 지운다 git push -f origin (branch 이름) #커밋내용을 지우고 다시 push commit 여러개를 지우고 싶은 경우 git log #커밋 이력을 확인한다 git reset HEAD~3 #이전의 커밋내용 3개를 지운다 git push -f origin (branch 이름) #커밋내용..

GITHUB 2021.07.27