코딩 테스트

개요문제 이름: 게임 맵 최단거리 (1844) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1844플랫폼: 프로그래머스알고리즘 분류: 깊이/너비 우선 탐색(DFS/BFS)소요 시간: 24시간... 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 전형적인 최단 경로 찾기 문제로, 너비 우선 탐색(BFS: Breadth-First Search) 알고리즘을 사용하여 해결할 수 있습니다. BFS는 그래프나 트리 구조에서 가장 가까운 노드부터 탐색하는 방법으로, 최단 경로를 찾는 데 적합합니다. 이 문제에서 게임 맵은 2차원 그래프로 표현할 수 있습니다. 각 칸은 그래프의 노드이며, 상하좌우로 인접한 칸들 사이에는 엣지가 있다고 볼 수 있습..
개요문제 이름: 타겟 넘버 (43165) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/43165플랫폼: 프로그래머스알고리즘 분류: 깊이/너비 우선 탐색(DFS/BFS)소요 시간: 5시간 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 주어진 숫자들을 더하거나 빼서 특정 타겟 넘버를 만드는 모든 방법의 수를 찾는 것입니다. 이는 전형적인 깊이 우선 탐색(DFS) 또는 재귀를 사용하는 문제입니다. 문제 접근 방식각 숫자에 대해 더하거나 빼는 두 가지 선택지가 있습니다.모든 숫자에 대해 이 선택을 수행하고, 마지막에 결과가 타겟 넘버와 일치하는지 확인합니다.일치하는 경우의 수를 세어 반환합니다. 문제 지시 사항주어진 숫자 배열의 각 요소..
개요문제 이름: 큰 수 만들기 (42883) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42883플랫폼: 프로그래머스알고리즘 분류: 탐욕법(Greedy)소요 시간: 30분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 "큰 수 만들기" 문제로, 주어진 숫자에서 특정 개수의 숫자를 제거하여 가장 큰 수를 만드는 것이 목표입니다.이 문제를 해결하기 위해서는 그리디(Greedy) 알고리즘과 스택(Stack) 자료구조를 활용하는 것이 효과적입니다. 문제의 핵심은 다음과 같습니다.주어진 숫자열을 순회하면서, 각 숫자를 검사합니다.현재 숫자보다 작은 이전 숫자들을 제거합니다. (단, 제거 가능한 횟수 내에서)최종적으로 남은 숫자들 중 앞에..
개요문제 이름: 조이스틱 (42860) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42860플랫폼: 프로그래머스알고리즘 분류: 탐욕법(Greedy)소요 시간: 10시간 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 그리디(Greedy) 알고리즘과 최적화 문제를 결합한 형태입니다. 주어진 이름을 만들기 위해 조이스틱을 최소한으로 조작하는 방법을 찾아야 합니다. 문제를 해결하기 위해서는 두 가지 주요 부분을 고려해야 합니다.각 문자를 변경하기 위한 상하 이동 횟수문자 간 이동을 위한 좌우 이동 횟수 문제 접근 방식각 문자에 대해 'A'에서 해당 문자로 변경하는데 필요한 최소 이동 횟수를 계산합니다.좌우 이동의 최적 경로를 찾습니다...
개요문제 이름: 구명보트 (42885) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42885플랫폼: 프로그래머스알고리즘 분류: 탐욕법(Greedy)소요 시간: 5시간 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 구명보트를 최소한으로 사용하여 모든 사람을 구출하는 최적의 방법을 찾는 것입니다. 문제의 핵심은 다음과 같습니다.구명보트는 최대 2명까지 탈 수 있습니다.구명보트에는 무게 제한이 있습니다.최소한의 구명보트로 모든 사람을 구출해야 합니다.이 문제는 그리디(Greedy) 알고리즘을 사용하여 효율적으로 해결할 수 있습니다. 그리디 알고리즘은 각 단계에서 가장 최적인 선택을 하는 방식으로, 이 경우 가장 무거운 사람과 가장 가..
개요문제 이름: 모음 사전 (84512) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/84512플랫폼: 프로그래머스알고리즘 분류: 완전탐색소요 시간: 2시간 30분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 모음으로 이루어진 길이 5 이하의 모든 단어가 수록된 사전에서, 주어진 단어의 순서를 찾는 문제입니다. 이 문제를 해결하기 위해서는 사전에서 단어의 순서를 파악하는 것이 중요합니다.문제 접근 방식은 다음과 같습니다.모음의 순서를 정의합니다. (예: A, E, I, O, U)주어진 단어의 각 글자를 모음 순서에 따라 변환합니다.변환된 값을 이용하여 사전에서의 순서를 계산합니다.이 문제는 수학적 규칙을 찾아내는 것이 핵심입니다..
개요문제 이름: 주식가격 (42584) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42584플랫폼: 프로그래머스알고리즘 분류: 스택/큐소요 시간: 1시간 10분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 주식 가격의 변동을 배열로 받아, 각 시점마다 가격이 떨어지지 않은 기간이 몇 초인지를 구하는 문제입니다. 문제를 해결하기 위해서는 배열을 순회하면서 각 시점마다 이후의 가격들을 비교하여 가격이 떨어지는 시점을 찾아야 합니다. 문제 해결을 위해 다음과 같은 접근 방식을 사용할 수 있습니다...!이중 반복문을 사용하여 각 시점마다 이후의 가격들을 비교하는 방법 (브루트 포스)스택을 사용하여 가격이 떨어지는 시점을 효율적으로 찾..
개요문제 이름: 더 맵게 (42626) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42626플랫폼: 프로그래머스알고리즘 분류: 힙소요 시간: 48시간(...)(2일 걸림) 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 우선순위 큐 또는 힙(Heap)을 사용하여 해결할 수 있는 알고리즘 문제입니다. 문제에서는 음식의 스코빌 지수를 모두 K 이상으로 만들기 위해 가장 맵지 않은 두 음식을 특별한 방법으로 섞어야 합니다. 이때 섞는 과정을 최소화하는 것이 목표입니다. 문제를 효과적으로 해결하기 위해서는 항상 스코빌 지수가 가장 낮은 두 음식을 선택해야 합니다. 이를 위해 우선순위 큐 또는 힙을 사용할 수 있습니다. 힙은 부모 노드의 ..
개요문제 이름: 체육복 (42862) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42862플랫폼: 프로그래머스알고리즘 분류: 탐욕법(Greedy)소요 시간: 30분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 탐욕법(Greedy, 그리디) 알고리즘을 사용하여야 합니다. 탐욕법 알고리즘은 현재 상황에서 가장 최선의 선택을 하는 방식으로, 문제를 단계별로 해결해 나가는 알고리즘입니다. 문제에서 요구하는 사항은 다음과 같은 상황입니다.전체 학생 수 n명 중에서 체육복을 도난당한 학생들의 번호가 lost 배열에, 여벌 체육복을 가져온 학생들의 번호가 reserve 배열에 주어집니다.체육복을 빌려줄 때는 바로 앞번호의 학생이나 바로 뒷..
개요문제 이름: 모의고사 (42840) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42840플랫폼: 프로그래머스알고리즘 분류: 완전탐색소요 시간: 4시간 20분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 주어진 정답 배열과 각 수포자의 찍기 패턴을 비교하여 가장 많은 문제를 맞힌 사람을 찾는 완전탐색 알고리즘 문제입니다. 각 수포자의 찍기 패턴은 일정한 규칙을 가지고 반복되므로, 이를 활용하여 정답과 비교할 수 있습니다. 문제 해결을 위해 다음과 같은 접근 방식을 사용할 수 있습니다.각 수포자의 찍기 패턴을 배열로 정의합니다.정답 배열을 순회하면서 각 수포자의 찍기 패턴과 비교하여 맞힌 문제의 개수를 카운트합니다.가장 많은 ..
개요문제 이름: 최소직사각형 (86491) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/86491플랫폼: 프로그래머스알고리즘 분류: 완전탐색소요 시간: 10분(...) 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 2차원 배열로 주어진 명함의 가로, 세로 길이를 이용하여 모든 명함을 수납할 수 있는 가장 작은 지갑의 크기를 구하는 알고리즘 문제입니다. 문제 해결을 위해서는 다음과 같은 접근 방식을 사용할 수 있습니다.각 명함의 가로와 세로 길이를 비교하여 긴 쪽을 가로로, 짧은 쪽을 세로로 회전시킵니다.회전시킨 명함들 중 가장 긴 가로 길이와 가장 긴 세로 길이를 찾습니다.찾은 가장 긴 가로 길이와 세로 길이를 곱하여 지갑의 크기..
개요문제 이름: K번째수 (42748) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42748플랫폼: 프로그래머스알고리즘 분류: 정렬소요 시간: 30분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 배열과 정렬, 인덱싱을 다루는 알고리즘 문제입니다. 주어진 배열에서 특정 구간을 잘라내고, 잘라낸 부분을 정렬한 후, 정렬된 배열에서 지정된 인덱스의 값을 찾아내는 것이 목표입니다. 문제에서 요구하는 사항을 정리하면 다음과 같습니다.배열 array와 2차원 배열 commands가 주어집니다.commands의 각 원소는 [i, j, k]로 이루어져 있습니다.array의 i번째부터 j번째까지 자릅니다. (i, j는 1부터 시작)자른 배열을..
개요문제 이름: 같은 숫자는 싫어 (12906) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12906플랫폼: 프로그래머스알고리즘 분류: 스택/큐소요 시간: 1시간 15분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 배열에서 연속적으로 나타나는 중복 숫자를 제거하고 남은 숫자들을 원래 순서대로 반환하는 알고리즘 문제입니다. 문제에서 요구하는 사항을 정리하면 다음과 같습니다.배열에서 연속적으로 나타나는 숫자는 하나만 남기고 제거한다.제거된 후 남은 숫자들은 기존 배열의 순서를 유지해야 한다.이 문제를 해결하기 위해 스택(Stack) 자료구조를 활용할 수 있습니다. 스택은 후입선출(LIFO - Last In First Out)의 특..
개요문제 이름: 완주하지 못한 선수 (42576) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42576플랫폼: 프로그래머스알고리즘 분류: 해시소요 시간: 50분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 마라톤 경기에 참가한 선수들 중 완주하지 못한 한 명의 선수를 찾아내는 알고리즘 문제입니다. 참가자 배열과 완주자 배열이 주어지며, 완주하지 못한 선수의 이름을 반환해야 합니다.문제를 해결하기 위해 '해시 알고리즘'을 사용할 수 있습니다. 해시 알고리즘은 키(key)와 값(value)을 매핑하여 데이터를 저장하고 검색하는 알고리즘으로, 빠른 검색 속도를 제공합니다. 이 문제에서는 참가자의 이름을 키로, 참가자의 수를 값으로 ..
개요문제 이름: 폰켓몬 (1845)문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1845플랫폼: 프로그래머스알고리즘 분류: 해시소요 시간: 20분 문제 전문설명제한사항입출력 문제 풀이해설해당 문제는 배열에서 주어진 조건에 맞게 원소를 선택하여 최대한 많은 종류의 원소를 포함하도록 하는 알고리즘 문제입니다. 이를 해결하기 위해서는 '해시(Hash) 알고리즘'을 활용할 수 있습니다. 해시 알고리즘이란 키(key)와 값(value)을 매핑하여 데이터를 저장하고 검색하는 알고리즘입니다. 해시 함수를 사용하여 키를 해시값으로 변환하고, 이를 인덱스로 사용하여 데이터에 접근합니다. 해시 알고리즘을 사용하면 데이터의 중복을 효율적으로 제거하고 빠른..
Jukrap
'코딩 테스트' 태그의 글 목록