알고리즘 4

튜플

문제 어떤 튜플을 나타내는 집합들이 문자열로 표시되어 입력으로 들어오면, 그 튜플을 알아내면 된다. 풀이방법 문자열을 일단 리스트 형태로 변환해야 하고, 리스트 형태로 변환된 내용을 길이 순서대로 정렬해서, 새로 추가되는 원소로 정답 튜플의 원소를 하나씩 얻으면 된다. programmers.co.kr/learn/courses/30/lessons/64065 def solution(s): tuple_list = s[2:-2].split("},{") tuple_list = [e.split(",") for e in tuple_list] tuple_list = sorted(tuple_list, key=lambda x: len(x)) history_set = set() answer = [] for tuple in ..

알고리즘 2021.05.08

수식 최대화

문제 수식이 주어졌을때 연산자 우선순위를 바꿔서 얻을 수 있는 값의 최대 절대값을 얻어야 한다. 풀이방법 일단 배열로 식을 분리하고, 모든 경우의 수로 식을 계산해본다. 최대값만 저장해서 최후에 반환한다. programmers.co.kr/learn/courses/30/lessons/67257 from itertools import permutations def solution(expression): nexpression = [] operand = "" # 식을 배열로 구분하기 for index, char in enumerate(expression): if char in "0123456789": operand += char elif char in "+-*": nexpression.append(operand..

알고리즘 2021.05.08

보석 쇼핑

문제 모든 유니크한 원소들로 구성된 서브 배열의 길이가 최소값일때 위치를 구하는 문제이다. 중복되는 길이의 경우 더 앞의 배열이 우선된다. 풀이방법 투포인터로 푼다. 포인터 안에 들어갈 경우 카운트하고, 밖으로 나갈경우 카운트에서 제외한다. 모든 원소들이 있는 경우 left를 +1하고, 모든 원소가 있는게 아니라면 right를 +1한다. 다만, 한번 배열을 찾았다면 더 긴 배열은 필요없으므로, 그때부터는 right가 이동할때 left도 함께 이동한다.(슬라이딩 윈도우) programmers.co.kr/learn/courses/30/lessons/67258 def solution(gems): gems_count = {k: 0 for k in (set(gems))} pos1, pos2 = 0, 0 gems_..

알고리즘 2021.05.08

동굴 탐험

문제 총 노드 갯수와 노드 끼리의 연결정보, 우선 방문 노드 정보가 배열로 주어진다. 어떤 노드를 가려면 우선 방문해야 되는 노드가 있으며, 그 노드를 방문할수 없는 네트워크라면 False, 가능한 네트워크라면 True를 반환한다. 풀이방법 bfs로 풀었는데, 0부터 시작하면서 모든 노드를 순회하고, 우선 방문해야 되는 노드가 있는 노드라면 기다림 표시를 하고, 다른 노드가 기다리고 있던 노드라면 큐에 다시 방문해야 되는 노드를 추가해 준다. 그리고 모든 노드에서 방문하지 않은 노드를 큐에 추가한다. programmers.co.kr/learn/courses/30/lessons/67260?language=python3 코딩테스트 연습 - 동굴 탐험 9 [[0,1],[0,3],[0,7],[8,1],[3,6]..

알고리즘 2021.05.06