[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개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.출력첫째 줄에 지나야 하는 최소의 칸 수를 출력한다. 항상 도착위치로 이동할 ..
[코딩테스트 알고리즘] 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는 기본적..
[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보다 크거나 같고 ..
[Java Algorithm] 프로그래머스 Lv.2_ 피로도
·
Study/Algorithm Study
[문제]XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다.이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러개 있는데, 한 유저가 오늘 이 던전들을 최..
[Java Algorithm] 프로그래머스 Lv.2_ 카펫
·
Study/Algorithm Study
[문제]Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.제한사항- 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.- 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니..