728x90
백준 1303번 전쟁 - 전투 문제 이 문제는 전쟁터에서 뭉쳐있는 병사들을 찾아내어 그들의 전투력을 계산하는 문제로 예제 입력을 통해 알 수 있듯이 완전 탐색을 이용해 풀 수 있는 문제이다. 본인은 BFS를 사용하여 문제를 해결하였다. " 💡 문제 해결 아이디어 " 문제는 말했다시피 BFS를 사용하여 해결하였다. 우선 bpower, wpower 변수를 0으로 미리 초기화시켜둔다. 그리고 입력받은 문자열(BWWWB.. 등)은 n개의 문자로 쪼개어 그래프에 한 줄씩 list단위로 저장하여 n X m 형태의 2차원 배열을 생성한다. 그래프 생성이 완료되면 그래프의 0,0부터 m-1,n-1 까지 탐색하면서 B또는 W를 찾는데 만약 해당 좌표의 값이 'B' 또는 'W'라면 bfs를 통해 뭉쳐있는 같은 팀 병사를 ..
스프링부트 몽고DB 연결 이번 포스팅에선 스프링부트에 스프링 데이터 몽고디비를 사용하여 DB를 연결하고, 간단한 api를 구현하여 연결이 잘 되었는지 테스트해보는 내용에 대해 다뤄보겠습니다. 아직 몽고DB에 관하여 공부가 더 필요하기 때문에 우선 간단한 내용과 연결 방법을 소개하고 다음 포스팅에서 몽고디비에 관한 내용만을 다루는 포스팅을 작성하겠습니다. 바로 시작하겠습니다. :: Mongo DB :: MongoDB의 기본적인 데이터 구조는 데이터베이스, 컬렉션, 도큐먼트 단위로 관리된다. MongoDB 장점 Schema-less 구조 - 다양한 형태의 데이터 저장 가능 - 데이터 모델의 유연한 변화 가능(데이터 모델 변경, 필드 확장 용이) Read/Write 성능이 뛰어남 Scale Out 구조 - 많..
자바 Comparable Interface 자바로 개발을 하다보면 Domain 클래스 구현을 위해 primitive 타입 자료형을 감싸는 경우가 있다. primitive 타입이 다음과 같이 Domain클래스로 Wrapping될 경우 외부에서 따로 처리해주어야 하던 값 검증 로직을 클래스 내부에 작성하여 생성자를 통해 객체 생성 시에 값 검증까지 처리할 수 있다는 장점이 생긴다. public class User { private int age; private String name; public User(int age, String name){ this.age = age; this.name = name; } } User user1 = new User(10,'sj'); User user2 = new User(..
백준 1260번 음식물 피하기 문제 "💡 문제 해결 아이디어 " 해당 문제는 BFS를 통해 해결할 수 있었다. 음식물 피하기는 어떤 가장 큰 음식물 쓰레기의 사이즈를 구하는 문제이다. 음식물 쓰레기는 근처(상,하,좌,우)에 붙어있으면 더 큰 크기로 변하는데 가장 많이 붙어있는 음식물 쓰레기의 범위를 구하면 되는 문제이다. 이러한 힌트가 문제에 주어지는데 이처럼 그래프를 형성하여 BFS를 통해 가장 많이 연결되어있는 '#'의 count를 구해 답을 유추했다. 0,0 ~ n-1,m-1 범위를 이중 반복문으로 모두 방문하며 그래프의 값이 '#'이면 bfs를 통해 연결되어있는 음식물 쓰레기의 갯수를 구해 return한다. 여기서 return 받은 값들 중 가장 큰 값이 답이기 때문에 max라는 변수를 -1로 초..
백준 1260번 DFS와 BFS DFS와 BFS를 사용하여 정렬한 값을 출력하는 문제이다. 💡 문제 해결 아이디어 정답 비율이 낮아 재밌어보여 풀어보았는데 그냥 단순히 DFS와 BFS 알고리즘을 통해 해결할 수 있는 문제였다. 아마 낮은 정답률의 원인이 정점 번호가 작은 것을 먼저 방문하는 것 때문인 거 같다. 방향이 주어지지 않았기 때문에 노드가 서로 바라보도록 연결하면 되겠다고 생각하여 연결되는 두 노드(node1, node2)를 입력받으면 그래프의 node1 위치에 node2를 추가하고 node2 위치에 node1을 추가하여 서로 연결시켰다. 여기서 중요한 점은 graph에 등록하고 등록된 그래프를 오름차순 정렬 시켜주는 코드이다. 정렬은 list의 기본 메서드인 sort()를 통하여 해결하였다. ..
백준 2583번 영역 구하기 문제 영역 구하기 문제는 빈 공간의 넓이와 갯수를 계산하여 출력하는 문제이다. 이번 문제는 BFS를 사용하면 간단히 해결할 수 있을 것 같아 BFS방식을 채택하여 해결하였다. "💡 문제 해결 아이디어 " 벽과 벽이 아닌 곳의 구분을 하기 위해 벽:1, 벽이 아닌 곳:0으로 구현하기로 정하고 문제 해결에 들어갔다. 우선 입력받은 가로, 세로의 길이를 통해 높이가 M, 너비가 N인 직사각형을 만든다. 반복문을 통한 2차원 배열 생성 방식으로 그래프를 생성하였고 각 1차원 배열의 값은 모두 0으로 채운다. 그럼 [[0,0,0,0,0,0], [0,0,0,0,0,0], ...] 과 같은 형태의 그래프가 그려진다. 그 다음 좌표 x1,y1,x2,y2값을 K번 입력받는데, 입력 받을 때마..