목록알고리즘 (28)
개발저장소
문제https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이주어진 항공권을 모두 사용해서 여행경로를 짠다. 출발은 무조건 "ICN" 공항에서 한다.tickets의 각 행의 0번 인덱스는 출발 지역, 1번 인덱스는 도착 지역이다.만약 두가지 이상의 여행경로가 나온다면 알파벳 순서가 앞서는 경로를 선택한다.모든 도시를 방문할 수 없는 경우는 주어지지 않는다. 여행경로를 위해 주어진 항공권을 끝까지 탐색해야 하기 때문에 DFS를 사용해야 한다.이때, 여러..
문제https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이각 종류별로 최대 하나의 의상만 입을 수 있다. 예를 들어 얼굴에 해당하는 부위에 안경과 선글라스를 모두 착용하는 것은 불가능하다.착용한 의상이 일부 겹치더라도 다른 의상이 겹치지 않거나 추가된다면 다른 옷을 착용한 것으로 한다.최소 하나의 의상은 입게 된다. 즉, 아무 것도 입지 않는 경우를 제외하고 모든 경우를 구해야 한다.각 종류의 의상 개수를 구해야 한다. 의상 종류를 String 자..
문제 https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 풀이 길이 N의 수열에서 연속된 수들의 부분합 중에 S 이상을 만족하는 것 중, 가장 짧은 경우의 길이를 구한다. N의 범위는 10 이상 100,000 이하이고 S의 범위는 0 초과 100,000,000 이하이다. 입력되는 N이 많기 때문에 이중 for문을 사용한 풀이는 무조건 시간 초과가 일어난다. 투포인터를 사용하면 일차원 배열 위에서 인덱스가 움직이는 방식이기 때문에, 최..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 N x M의 맵 위에서 (1,1)의 위치에서 (N,M)의 위치까지의 최단거리를 구한다. 벽은 0으로 입력되고 움직일 수 있는 길은 1로 입력된다. 동서남북으로 한칸씩만 움직일 수 있다. 맵 밖으로는 이동할 수 없다. 도착할 수 없을 때는 -1을 출력한다. 목표까지 최단거리를 찾는 문제이므로 BFS를 사용해서 풀었다. 먼저 풀이에 필요한 요소가 어떤 것이 있는지 생각해 보았다. 방문한 위치..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 n개의 음이 아는 정수들을 더하거나 빼서 타겟 넘버를 만들어야 한다. 순서를 서로 바꾸지 않기 때문에 같은 값이라도 다른 숫자로 취급한다. n개의 정수들을 모두 계산해야 하기 때문에 DFS로 모든 경우의 수를 탐색하는 방향으로 문제에 접근하였다. 먼저 DFS의 재귀 탈출 조건을 생각하였다. n개의 정수를 모두 계산해야 하니까 배열의 길이를 탈출 조건으로 걸어 DFS의 깊이가 같아지는 순..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 초 단위로 기록된 배열 prices가 주어진다. 가격이 떨어지지 않은 시간을 return 한다. 맨 처음에는 2중 for문을 사용해서 해당 인덱스와 이후의 인덱스를 비교해서 가격이 떨어질 때 까지 비교하는 방법으로 풀었다. 하지만 이 방법은 시간복잡도가 O(n^2)나 되기 때문에 다른 풀이를 생각해보았다. 순서대로 쌓인 이전 값을 비교한다는 점에서 Stack 자료구조를 사용한다는 사실은..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 올바른 괄호는 반드시 '(' 문자로 열려서 ')' 문자로 닫혀야 한다. 즉, "()()" 또는 "(())()"는 올바른 괄호, ")()(" 또는 "(()(" 는 올바르지 않은 괄호이다. 문자열 s는 괄호로만 이루어져 있다. 괄호는 반드시 '('와 ')'이 쌍을 이루어야 하기 때문에 LIFO ( Last In First Out ) 자료구조인 Stack을 사용해야 한다. 여는 괄호가 나오면..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 다리에는 트럭이 최대 bridge_length 대 올라갈 수 있다. 다리는 weight 이하까지 무게를 견딜 수 있다. 모든 트럭이 움직일 때 1초의 시간이 흐른다. 다리에 올라간 트럭은 먼저 올라간 순서대로 내려와야 하므로 Queue 자료구조를 사용한다. 처음에는 대기 트럭도 Queue에 담아서 구현하려 하였지만 출력만 일어나기 때문에 굳이 그럴 필요가 없다는 사실을 깨달았다. 먼저 ..