[Java Algorithm] 백준 2178 _ 미로 탐색
·
Study/Algorithm Study
[문제]N×M크기의 배열로 표현되는 미로가 있다.미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다.입력첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.출력첫째 줄에 지나야 하는 최소의 칸 수를 출력한다. 항상 도착위치로 이동할 ..
[Java Algorithm] 백준 1962 _ 그림
·
Study/Algorithm Study
[문제]어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다.입력첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m(1 ≤ m ≤ 500)이 차례로 주어진다. 두 번째 줄부터 n+1 줄 까지 그림의 정보가 주어진다. (단 그림의 정보는 0과 1이 공백을 두고 주어지며, 0은 색칠이 안된 부분, 1은 색칠이 된 부분을 의미한다)출력첫째 줄에는 그림의 개수, 둘째 줄에는 그 중 가장 넓은 그림의 넓이를 출력하여라. 단, 그림이 하..
[코딩테스트 알고리즘] BFS 너비 우선 탐색
·
Study/Algorithm Study
개념BFS는 그래프 탐색의 한 가지 방법더보기* 그래프 탐색이란?어떤 것들이 연속해서 이어질 때, 모두 확인하는 방법Graph = Vertex(정점) + Edge(간선) 그래프 탐색 종류- BFS : Breadth-first search(너비 우선 탐색)- DFS : Depth-first search(깊이 우선 탐색) 아이디어1. 시작점에 연결된 Vertex 찾기2. 찾은 Vertex를 Queue에 저장3. Queue의 가장 먼저 것 뽑아서 반복💡 BFS - Queue / DFS - Stack 시간복잡도BFS = O(V+E)* 시간복잡도 = 알고리즘이 얼마나 오래 걸리는지 자료구조- 검색할 그래프- 방문 여부 확인(재방문 금지)- Queue : BFS 실행 출처 : 개발자 장고 [정리]BFS는 기본적..
백엔드 개발 핵심 3요소 _ 웹 서버, WAS, DB
·
Develop Basic
그동안 개발을 하면서 주어진 기능 구현에만 급급했었다. 코드가 어떻게 실행되고, 어떤 구조 위에서 돌아가는지 깊이 생각해본 적이 없었는데유투브 원투코딩 채널에 백엔드의 가장 기본이 되는 핵심 요소에 대한 영상이 있길래 보면서 정리해봤다. 백엔드 개발을 위해 꼭 알아야 할 전체 구성 [Web Server, WAS, Database] 1. Web Server- 문제 상황: HTML 문서를 어디서든 볼 수 있게 공유할 수 있도록 만들고 싶음- 결과: 정적 파일을 공유할 수 있게 해주는 웹 서버 등장 웹 서버가 하는 일웹 서버는 정적 파일(HTML, CSS, JavaScript, 이미지 등)을 클라이언트에게 전달하는 역할을 한다.사용자가 URL에 접속하면 서버에 저장된 파일을 그대로 내려주는 방식이다. 별도의 ..
[Java Algorithm] 프로그래머스 Lv.2 _ 프로세스
·
Study/Algorithm Study
[문제]운영체제의 역할 중 하나는 컴퓨터 시스템의 자원을 효율적으로 관리하는 것입니다. 이 문제에서는 운영체제가 다음 규칙에 따라 프로세스를 관리할 경우 특정 프로세스가 몇 번째로 실행되는지 알아내면 됩니다.1. 실행 대기 큐(Queue)에서 대기중인 프로세스 하나를 꺼냅니다. 2. 큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 다시 큐에 넣습니다. 3. 만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행합니다. 3.1 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료됩니다.예를 들어 프로세스 4개 [A, B, C, D]가 순서대로 실행 대기 큐에 들어있고, 우선순위가 [2, 1, 3, 2]라면 [C, D, A, B] 순으로 실행하게 됩니다.현재 실행 ..
[Java Algorithm] 프로그래머스 Lv.2 _ 올바른 괄호
·
Study/Algorithm Study
[문제]괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어- "()()" 또는 "(())()" 는 올바른 괄호입니다.- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.제한사항- 문자열 s의 길이 : 100,000 이하의 자연수- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. [Algorithm]열린 괄호인지 닫힌 괄호인지 나눠서 열린 괄호인 경우 +1, 닫힌 괄호인 경우 -1전체 count가 0인 경우 t..
[Java Algorithm] 프로그래머스 Lv.2 _ 기능개발
·
카테고리 없음
[문제]프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.제한 사항- 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.- 작업 진도는 100 미만의 자연수입니다.작업 속도는 100 이하의 자연수입니..
[Java Algorithm] 프로그래머스 Lv.1 _ 같은 숫자는 싫어
·
Study/Algorithm Study
[문제]배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.제한사항- 배열 arr의 크기 : 1,000,000 이하의 자연수- 배열 arr의 원소의 크기 : 0보다 크거나 같고 ..