본문 바로가기

전체 글

알고리즘 그래프 백준 2667 이번 문제도 똑같이 DFS나 BFS로 풀면 되는 문제입니다. 저는 이번에도 BFS로 풀었습니다. 문제에서 출력을 총 단지의 수와 각 단지내 집의 수를 오름차순으로 정렬하여 한줄에 하나씩 출력하는 것입니다. villageCnt는 단지의 수를 저장할 변수이고 villageSize는 각 단지별 집의 수를 저장할 배열입니다. 제 BFS 함수입니다. 방문한 점은 visited를 true로 바꾸고 방문하지 않은 점은 queue에 하나씩 넣어 처리해 줍니다. true로 하나씩 바꿀때마다 해당 단지의 집의 수도 하나씩 올려줍니다. Arrays.sort로 배열을 오름차순으로 정렬 한 뒤에 집의 수가 0이 아닌 단지만 순서대로 출력해주면 됩니다. 더보기
알고리즘 - 그래프 백준 2178 해당 문제는 bfs로 풀었습니다. 우선 인접행렬에 받아온 값을 넣고 N과 M으로 배열의 크기를 초기화 해줍니다. bfs는 큐를 사용하는데, 좌표의 개념이기 때문에 가로축과 세로축을 저장할 큐를 생성합니다. (0,0)보다 크고 (N+1, M+1)보다 작은 범위에서 방문한적이 없고 1인 정점들을 방문하면 되기 때문에 아래와 같은 코드가 나옵니다. 그리고 방문 횟수는 방문한 정점에 1대신 저장을 해줍니다. while문이 종료되면 map[N][M]을 출력합니다. 더보기
Scanner vs BufferedReader 비교 1. 둘다 외부 시스템으로부터 입력을 받을 때 사용하는 클래스 2. 멀티쓰레드 프로그래밍을 할때는 반드시 BufferedReader를 사용해야 함. Scanner는 지원하지 않음. 3. Scanner는 1KB 버퍼, BufferedReader는 8KB로 훨씬 크다. 4. BufferedReader는 문자만 읽기 때문에 다양한 기능을 지원하는 Scanner보다 속도가 빠름 사용 방법 BufferedReader Scanner 결론 : Scanner를 사용할 땐 더 편하지만 성능상 BufferedReader가 더 좋기 때문에 BufferedReader를 사용하는게 좋을 듯. 더보기
알고리즘 - 그래프 백준 1260 그래프 알고리즘의 기본 dfs bfs문제입니다. bfs는 큐를 이용하여 문제를 풀고 dfs는 재귀를 이용하여 문제를 풀면 됩니다. 우선 그래프를 구현하는데는 배열과 인접리스트 두가지를 이용하여 구현할 수 있는데 1. 배열을 이용한 구현 -배열의 크기를 노드 갯수 만큼 잡아줍니다 -값을 받아와서 행렬에 1을 넣습니다. 2. 인접리스트를 이용한 구현 -리스트의 길이를 노드 갯수 만큼 잡아줍니다. -노드들을 리스트에 넣어 줍니다. -각 노드들을 넣어줍니다. DFS 인접리스트 버전 행렬 버전 BFS 인접리스트 버전 행렬버전 문제는 1step : 그래프 구현 2step :DFS, BFS 구현 순으로 풀면 됩니다. 더보기
Sonarlint 설치 오류 회사에서 jenkins로 배포하기 전에 sonarqube로 소스를 체크하는데, 어떤 직원분이 git remote branch에 push하기 전에 로컬에서 sonarlint로 소스를 한번 점검하고 push하자고 하였습니다. sonarlint란? sonarqube와 연결하거나 아니면 로컬에서 자체적으로 코드의 품질을 체크하는 플러그인입니다. STS, intelliJ, visual studio와 같은 프로그램에 플러그인 형식으로 설치 할 수 있습니다. Sonarqube와 다른점은 sonarqube처럼 새로운 rule을 추가하여 코드를 점검할 수 없다는...?거 말고는 없는거 같습니다. 할튼 좋아보입니다. 설치 후 에러 발생 사용중인 STS에 Sonarlint 플러그인을 market을 통해 설치하였는데 java.. 더보기
알고리즘 - 그래프 개념 자료구조의 종류 사물이나 개념의 연결관계를 표현 정점과 간선으로 이루어져 있으며 간선은 정점간의 관계를 나타내는데 사용. G = (V,E) 경로 : 한 정점에서 특정 노드로 이동하는 방법 사이클 : 경로중에서 시작노드와 도착노드가 같은 방법 단순경로와 단순 사이클 : 같은 정점을 두번 이상 방문하지 않는 경로와 사이클 방향이 있는 그래프 : 특정 방향으로만 이동이 가능한 그래프 방향이 없는 그래프 : 이동에 대한 방향 제약이 없는 그래프 다중 그래프 : 두 정점 사이에 두개 이상의 간선이 있는 그래프 루프 : 시작점과 끝점이 같은 간선 가중치 : 이동하는데 필요한 시간등 수치가 있는 그래프 차수 : 정점과 연결되어 있는 간선의 개수 방향이 있는 그래프의 차수 : 나가는 간선 / 들어오는 간선의 개수를 따.. 더보기
AWS DynamoDB 1(DynamoDB란 ?) 회사에서 다양한 인프라를 사용하고 있지만 오늘은 그 중 AWS에서 제공하는 DynamoDB에 대해 AWS 공식 문서를 정리해보았습니다. DynamoDB란 무엇인가 AWS에서 제공 하는 NoSQL 데이터베이스 AWS에서 운영 확장에 대한 관리를 해주기 때문에 부담이 없음. 대규모 트래픽도 처리 가능하며, 다운타임이나 성능 저하 없이 테이블 처리 능력을 조정할 수 있음. 온 디맨드 백업 기능을 제공하여 원하는 수준의 백업을 설정 할 수 있음. 핵심 구성 요소 테이블 -항목의 집합 -데이터가 저장되는 곳 -데이터의 집합 항목 -속성의 집합 -각 테이블에는 0개 이상의 항목이 있음 -RDBS의 행, 레코드 또는 튜플과 유사함. ex) People 테이블에서 각 항목은 한 사람을 의미함 속성 -항목은 하나 이상의.. 더보기
리액트 네이티브 개발 1 시작 배경 새해도 되었고 회사에서는 vue와 spring으로 개발을 계속 하여 삶의 약간의 활력(?)을 주기 위해 공부를 시작하게 되었습니다. 단순히 공부하는 것 보다는 결과물이 보이는 앱개발을 선택하였습니다. 제가 공부하면서 도움이 될 만한 내용은 블로그에 기록을 해보려고 합니다...(블로그를 열심히 해보는 것도 2021년 목표이기 때문에...) 리액트 네이티브란? 리액트 네이티브는 페이스북에서 출시한 모바일 어플리케이션 프레임워크입니다. 해당 프레임워크는 js 기반이며 개발이 끝나고 나면 원하는 모바일 플랫폼으로 빌드할 수 있습니다. 저는 윈도우를 사용하고 있어 ios 개발은 불가능 하기 때문에 안드로이드를 기준으로 해볼 생각입니다. 환경설정 1. chocolatey 설치 -cmd를 관리자 권한으로 .. 더보기