목록알고리즘/프로그래머스 (62)
어흥
문제 링크: programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 1. 주의할 점 - Long Long을 계속 유지하도록 한다 - 헷갈리지 않도록 구현한다 2. 구현 - Expression에서 숫자는 Num 벡터에, 연산자는 Op 벡터에 넣는다. 이때, opChar에는 사용된 연산자의 종류를 저장한다 - DFS() 함수를 통해 사용된 연산자에 우선순위를 부여한다 - Cal() 함수에서 Dq와 Qop를 통해 Num과 Op 벡터의..
문제 링크: programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 1. 주의할 점 - 지문을 정확히 읽어야 한다 (만일 경로가 여러개일 경우, 알파벳 순서가 앞선것 출력) - 알파벳 순서에 대한 처리를 수행한다 2. 구현 - 티켓에 포함된 공항명을 Map에 담는다. 또한, 경로에 대한 정보를 V[출발공항 번호]에 '도착공항'을 담는다 - V[] 벡터에 대해 알파벳 숫자가 앞선 순서대로 정렬한다 ..
문제 링크: programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 1. 주의할 점 - TLE가 날까..? 하는 방식으로 풀어도 TLE가 발생하지 않는다 2. 구현 - 2^20 은 대략 10^6으로 1초인 10^9보다 작으니 브루트포스로 풀어도 가능하다 - 각 수를 총합에서 더하거나 빼면서 진행한다. 끝까지 다다른 경우, Target과 숫자가 일치하면 1을, 아니라면 0을 반환..
문제 링크: programmers.co.kr/learn/courses/30/lessons/43236 코딩테스트 연습 - 징검다리 출발지점부터 distance만큼 떨어진 곳에 도착지점이 있습니다. 그리고 그사이에는 바위들이 놓여있습니다. 바위 중 몇 개를 제거하려고 합니다. 예를 들어, 도착지점이 25만큼 떨어져 있고, 바위가 programmers.co.kr 1. 주의할 점 - 브루트포스로 접근하지 않는다 - 구하려는 수의 범위가 크다 + O(N^2)의 경우로는 TLE가 발생할 것 같다 → 최소 O(NlgN)의 방법으로 접근한다 2. 구현 - 구하려는 답의 크기가 1~10억 사이의 수 → 이분탐색으로 접근 - 파라미터로 전달받은 Rocks의 수가 정렬되어 있지 않다 -> 이분탐색을 위해 정렬 - V 벡터에..
문제 링크: programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 1. 주의할 점 - 크레인으로 뽑는 경우, 뽑은 자리는 0으로 바꾼다 - 바구니의 가장 위에 위치한 인형과 뽑은 인형만 비교한다 2. 구현 - 뽑으려는 위치를 idx로 표시한다(기존의 원소 - 1) - 위에서부터 뽑으므로 0부터 Num-1까지 탐색하여 인형이 있다면 뽑은 후, 해당 위를 0으로 바꾼다 - 뽑은 인형의 숫자를 바구니의 가장 위와 비교한다. 이때, 바구니가 비어있다면 바로 뽑은..
문제 링크: programmers.co.kr/learn/courses/30/lessons/64062 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr 1. 주의할 점 - 숫자가 크다 → 단순한 풀이로 접근하려고 하면 TLE가 발생한다 - 벡터/배열의 index 범위를 벗어나는지 확인한다 2. 구현 - 이분탐색을 통해 접근한다. 중간값만큼의 사람들이 넘어갈 수 있는가? - 돌의 가장 큰 크기가 200,000,000이므로 이보다 1 더 크게 R을 설정한다. L은 0으로 설정한다 - 0번째 돌까지 뛰는것도 1만큼 뛴것이기 때문에 idx를 -1로 설정하고 점프 크기(J)를 1~K까지로 설정한다 - 현재 위치에서 뛰어서 징검다리의 반..
문제 링크: programmers.co.kr/learn/courses/30/lessons/64064 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr 1. 주의할 점 - 불량사용자와 매칭된 사용자는 탐색할 수 없어야 한다 - 예제 2번과 같이 순서가 같지만 사용자는 같으므로 순열이 아닌 조합이다 2. 구현 - 불량사용자와 매칭된 사용자들이 오름차순으로 정렬하여 Set에 저장하여 조합의 수를 구하도록 한다 - DFS(idx)를 통하여 idx번째 불량사용자와 매칭되는 i번째 사용자를 구한다 - 사용자와 매칭되려면,..
문제 링크: programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 1. 주의할 점 - 각 원소를 모두 숫자로 끊는다. 이때, 2자리수 이상을 어떻게 처리해야 하는지 생각한다 2. 구현 - 문자열 S에서 문자 1개씩 읽는다. 이때, 숫자형태인 문자라면 str에 더한다. 아닌 경우, str을 int로 바꾼 이후, 0이 아니라면(""->0으로 치환된다. 또한, 자연수라고 했으므로 0..