Algorithm
-
[알고리즘] 프로그래머스 2단계 - 호텔 대실Algorithm 2024. 6. 12. 17:34
프로그래머스 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/155651 문제 설명호텔을 운영 중인 코니는 최소한의 객실만을 사용하여 예약 손님들을 받으려고 합니다. 한 번 사용한 객실은 퇴실 시간을 기준으로 10분간 청소를 하고 다음 손님들이 사용할 수 있습니다. 예약 시각이 문자열 형태로 담긴 2차원 배열 book_time이 매개변수로 주어질 때, 코니에게 필요한 최소 객실의 수를 return 하는 solution 함수를 완성해주세요. 예시 book_time [["15:00", "17:00"], ["16:40", "18:20"], ["14:20", "15:20"], ["14:10", "19:20"], ["18:20", "21:20"]] ..
-
[묘공단] 코딩 테스트 합격자 되기 - 정렬Algorithm 2024. 6. 5. 10:15
코딩 테스트 합격자 되기 자바편 책 제목 : 코딩 테스트 합격자 되기 자바편지은이 : 김희성 0. 정의 정렬이란 사용자가 정의한 순서로 데이터를 나열하는 것을 말한다.사용자가 정의한 순서는 오름차순이나 내림차순일수도 있고 임의의 조건이 될 수 도 있다. 1. 삽입정렬정렬이되지않은 영역과 정렬된 영역을 나눠서 정렬을 진행한다. 아래 그림과 같이 하나씩 좌측으로 옮기면서 자신의 좌측이 작을때까지 하나씩 이동한다. 2. 병합정렬분할하고 정복한다는 방식을 취한다.데이터를 부분적으로 나눈 후에 각 나눠진 내부에서도 하나씩원소를 쪼갠다.그 후에 자체적으로 정렬을 수행하며 병합한다.그리고 마지막에 처음 부분적으로 나눈 값을 병합하여 하나의 배열로 만든다. 3. 힙정렬여기에서의 힙은 특정 규칙이 있는 이진트리를 의미..
-
[알고리즘] 프로그래머스 2단계 - 귤 고르기Algorithm 2024. 6. 5. 09:17
프로그래머스 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/154540 문제 설명문제 설명 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니..
-
[알고리즘] 프로그래머스 2단계 - 무인도 여행Algorithm 2024. 6. 3. 15:02
프로그래머스 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/154540 문제 설명메리는 여름을 맞아 무인도로 여행을 가기 위해 지도를 보고 있습니다. 지도에는 바다와 무인도들에 대한 정보가 표시돼 있습니다. 지도는 1 x 1크기의 사각형들로 이루어진 직사각형 격자 형태이며, 격자의 각 칸에는 'X' 또는 1에서 9 사이의 자연수가 적혀있습니다. 지도의 'X'는 바다를 나타내며, 숫자는 무인도를 나타냅니다. 이때, 상, 하, 좌, 우로 연결되는 땅들은 하나의 무인도를 이룹니다. 지도의 각 칸에 적힌 숫자는 식량을 나타내는데, 상, 하, 좌, 우로 연결되는 칸에 적힌 숫자를 모두 합한 값은 해당 무인도에서 최대 며칠동안 머물 수 있는지를 나타..
-
[묘공단] 코딩 테스트 합격자 되기 - 백트래킹Algorithm 2024. 5. 31. 14:04
책 제목 : 코딩 테스트 합격자 되기 자바편지은이 : 김희성 깊이탐색과 너비탐색의 문제깊이와 너비 우선 탐색 방법은 완전 탐색이라고한다.완전 탐색의 경우 모든 경우의 수를 탐색하는 방법이므로 대부분의 경우 비효율적이다. 백트래킹 예시예를 들어 우리가 출근하기 위해 아파트를 나섰는데 지갑을 두고와서 집으로 되돌아갈때 방을 하나씩 보면서 물건을 찾는다.화장실, 베란다, 거실등을 순서대로 볼때 지갑이 없을 가능성이 있는곳은 알아보고 되돌아가는 것을 백트래킹이라 한다. 백트래킹 알고리즘의 핵심은 해가 될 가능성을 판단하는 것이다.진행과정1. 유효한 해의 집합을 정의한다.2. 위 단계에서 정의한 집합을 그래프로 표현합니다.3. 유망 함수를 정의합니다.4. 백트래킹 알고리즘을 활용해서 해를 찾는다.유망함수주로 유망..
-
[알고리즘] 프로그래머스 2단계 - 마법의 엘리베이터Algorithm 2024. 5. 30. 17:39
프로그래머스 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/12914 문제 설명마법의 세계에 사는 민수는 아주 높은 탑에 살고 있습니다. 탑이 너무 높아서 걸어 다니기 힘든 민수는 마법의 엘리베이터를 만들었습니다. 마법의 엘리베이터의 버튼은 특별합니다. 마법의 엘리베이터에는 -1, +1, -10, +10, -100, +100 등과 같이 절댓값이 10c (c ≥ 0 인 정수) 형태인 정수들이 적힌 버튼이 있습니다. 마법의 엘리베이터의 버튼을 누르면 현재 층 수에 버튼에 적혀 있는 값을 더한 층으로 이동하게 됩니다. 단, 엘리베이터가 위치해 있는 층과 버튼의 값을 더한 결과가 0보다 작으면 엘리베이터는 움직이지 않습니다. 민수의 세계에서는 0..
-
[알고리즘] 프로그래머스 2단계 - 멀리 뛰기Algorithm 2024. 5. 29. 17:44
프로그래머스 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/12914 문제 설명효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다. 입출력 예제n4 result5..
-
[알고리즘] 프로그래머스 2단계 - 리코챗 로봇Algorithm 2024. 5. 28. 17:22
프로그래머스 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/169199 문제 설명리코쳇 로봇이라는 보드게임이 있습니다. 이 보드게임은 격자모양 게임판 위에서 말을 움직이는 게임으로, 시작 위치에서 목표 위치까지 최소 몇 번만에 도달할 수 있는지 말하는 게임입니다. 이 게임에서 말의 움직임은 상, 하, 좌, 우 4방향 중 하나를 선택해서 게임판 위의 장애물이나 맨 끝에 부딪힐 때까지 미끄러져 이동하는 것을 한 번의 이동으로 칩니다. 다음은 보드게임판을 나타낸 예시입니다. ...D..R .D.G... ....D.D D....D. ..D.... 여기서 "."은 빈 공간을, "R"은 로봇의 처음 위치를, "D"는 장애물의 위치를, "G"는 목표지..