
문제 링크 ▶︎ 프로그래머스 호텔 대실이 문제는 힙을 통해 구현한 문제이다.book_time 으로 받은 문자열 2차원 배열을 모두 정수로 바꿔주고 time 이라는 힙 배열에 입실 시간을 기준으로 push해준다.즉 time 힙 배열에서 pop 하면 time 배열에서 가장

문제 링크 ▶︎ 프로그래머스 배달이 문제는 BFS를 통해서 다익스트라 알고리즘으로 푼 문제이다.노드와 거리 정보를 maps 라는 딕셔너리에 저장하고, visit 은 큰 값으로 채워둔다.bfs 는 1번 노드부터 queue 에 넣고 빼면서 그 값을 out으로 둔다.maps

문제 링크 ▶︎ 프로그래머스 \[1차]프렌즈4블록이 문제는 집합을 통해 푼 문제이다.1차원 배열 board 를 2차원 배열로 만들어주고, 2X2 같은 캐릭터 검사를 해서 지워지는 좌표를 집합 s에 저장한다.이후, 집합의 길이만큼 answer에 추가하고 지워지는 칸을 빈

문제 링크 ▶︎ 프로그래머스 숫자 카드 나누기이 문제는 수학 구현 문제이다.A 카드에서의 최대공약수와 B 카드에서의 최대공약수만 비교하면 된다.그 이유는 만약 A 카드의 최대공약수가 B 카드 중 하나라도 나누어 떨어지게 된다면 A 카드의 최대공약수의 약수들은 무조건 나

문제 링크 ▶︎ 프로그래머스 미로 탈출이 문제는 BFS 로 푼 문제이다.처음에는 DFS로 풀려고 했지만 BFS가 효율이 더 좋다고 생각해 BFS로 풀었다.구현은 start -> lever 까지의 최소 거리를 구하고, lever -> end 까지의 최소 거리를 구해서 두

문제 링크 ▶︎ 프로그래머스 \[카카오 인턴] 수식 최대화이 문제는 스택으로 푼 구현 문제이다.expression을 연산자와 피연산자로 나누고, (+,-,\*) 3개뿐이라 그냥 길이 6인 order 배열을 만들어준다. (4이상이면 순열쓰면 될듯)연산자와 피연산자 배열은

문제 링크 ▶︎ 프로그래머스 순위 문제 전략 이 문제는 DFS 로 푼 문제이다. 우선 딕셔너리 2개 W 와 L 을 만들고, 이긴 상대와 진 상대를 따로 저장한다. 그리고 스택으로 구현한 DFS 함수를 통해서 내가 이길 수 있는 상대와 질 상대를 딕셔너리에 모두 저장

문제 링크 ▶︎ 프로그래머스 디펜스 게임이 문제는 힙으로 구현한 문제이다.매 라운드 공격해오는 적의 수를 최대힙으로 받아서, 합산한 값이 n 보다 커지게 되면 가장 큰 값을 pop하고 k -= 1 해준다.줄어든 합산 값으로 계속 진행한다.만약, enemy 배열을 다 돌

문제 링크 ▶︎ 프로그래머스 연속된 부분 수열의 합<span style="background-color:라는 조건이 있어 O(nlogn) 도 어려울 것 같다. 그리고 정렬된 정수 배열이라 정렬된 것을 이용하면 좋을 것 같다.배열을 한번에 돌면서 체크하는 방법을 고

문제 링크 ▶︎ 프로그래머스 소수 찾기numbers String을 각각 int로 만든 다음에 int로 구현을 할 것이냐? 아니면 <span style="background-color:문자열로 다룬다면 문자열의 변화가 잦을 것이기 때문에 <span style=

문제 링크 ▶︎ 프로그래머스 후보키relation 배열의 예시를 보면 모든 데이터가 String으로 받아져있기 때문에 만약 후보키가 두개의 컬럼으로 합쳐진다면 그냥 두개 String 합쳐서 유일성을 보장해주는지 체크하면 될 것 같다고 생각했다.기본적인 구현 틀은 한개의

문제 링크 ▶︎ 합승 택시 요금예전에 풀었던 ‘미로탈출’ 문제와 비슷한 방식으로 풀면 될 것 같다고 생각했다.우선 어떤 지점까지 합승을 해야하는지는 완전탐색으로 찾아야 할 것 같다. 모든 경우를 조사한 다음 비용의 최소인 경우를 도출해야한다.즉 <span styl

문제 링크 ▶︎ 등산코스 정하기문제에는 산봉우리까지 올라갔다가 다시 내려오면서까지의 intensity의 max가 가장 작은 경로를 탐색하라고 했는데 사실 출발지에서 산봉우리까지만 가면 된다. 어차피 그 경로에서 intensity의 max가 작으면 왕복의 intensit

문제 링크 ▶︎ 비밀 코드 해독비밀 코드의 조합이 필요하고 해당 조합이 q와 ans에 적합한지 검사하는 과정이 필요하다고 생각했다.그래서 오름차순의 조합을 백트래킹으로 구현하면 될 것 같고, 조합된 비밀 코드가 주어진 q와 ans에 적합한 코드인지 검사하는 과정은 q와

문제 링크 ▶︎ 충돌위험 찾기x대의 로봇의 이동 경로에 대한 좌표 정보를 모두 알고 있어야 하며, 시간대 별로 좌표를 비교할 수 있어야지 충돌하는 지 아닌 지를 체크할 수 있다.로봇의 수와 point의 수, 그리고 이동하는 지점의 수도 모두 100이하이기 때문에 모두

문제 링크 ▶︎ 아날로그 시계시침, 분침, 초침이 겹친다는 개념을 이해하는 것이 중요하다고 생각된다. 시간은 연속적이기 때문에 0도 ~ 360도 사이에서 같은 각도를 가지는 것이 아니라 각도가 역전되는 것이 겹친다의 개념으로 이해해야 한다.처음에는 start time에

문제 링크 ▶︎ 퍼즐 게임 챌린지문제에서 diffs, times의 길이가 30만이고 diffs의 값도 10만이기 때문에 순차적으로 레벨을 ++하거나 --해서 완전탐색해서는 시간초과를 뚫을 수가 없다. 그래서 이분법으로 접근한다면 레벨은 diffs의 min과 max 사이

문제 링크 ▶︎ 완전범죄(https://school.programmers.co.kr/learn/courses/30/lessons/389480주어진 info 배열의 인덱스마다 A가 훔치는게 적합할지, B가 훔치는게 적합할지를 경우의 수를 따지면 된다. 그러면 모

문제 링크 ▶︎ 처음에 주어진 과제에 대해서 시작 시간과 잔여 시간에 따라서 큐에 저장해야할 것이고, 강제 중지된 과제들을 담을 스택을 따로 만들어야한다. 강제 중지된 과제들을 스택에 담는 이유는 문제에서 보면 마지막에 중지된 과제를 먼저 수행한다고 했기때문이다. 그래