Algorithm
-
[프로그래머스] - 숫자 게임Algorithm/프로그래머스 2022. 9. 26. 18:29
문제 [프로그래머스] - 숫자 게임 https://school.programmers.co.kr/learn/courses/30/lessons/12987 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 자연수를 하나씩 부여받습니다. 각 사원은 딱 한 번씩 경기를 합니다. 각 경기당 A팀에서 한 사원이, B팀에서 한 사원이 나와 서로의 수..
-
[Algorithm] - DFS를 통한 모든 경우의 수Algorithm/Algorithm 2022. 9. 24. 01:49
DFS 특정 Start를 기반으로 Node를 재귀로 타고 들어가 자신이 도착하는 경우의 수를 추출한다. 모든 경우의 수 구하기 아래 경우에서 Node 1에서 4로 가는 경우의 수를 탐색한다고 하여보자. DFS로 구현을 하게 된다면 일반적으로 1-2-3-4 탐색 후 끝나는 것이 일반적이지만, 우리는 모든 경우의 수를 구현해야 한다. 알고리즘 기존의 DFS코드를 활용한다. 이 때 나머지 경우에도 탐색을 해야하기 때문에 Visited edge값을 되돌려주고 임의의 값을 빼준다. 코드 n = 5 edges = [[1,2],[1,3],[2,3],[2,5],[3,4],[3,5],[5,4]] from collections import defaultdict def solution(n,edges): graphs = de..
-
[Algorithm] - 부분합Algorithm/Algorithm 2022. 9. 24. 00:39
부분 합 부분 합이란? 흔히 부분합 알고리즘은 시작점 S 부터 끝점 E까지의 모든 합을 구하는 문제입니다. 하지만, 주어진 시간내에 주어지는 모든 범위의 부분합을 구하기 위해선, 일일이 다 더해주는 것은 비효율적인 일입니다. 임의의 배열을 만들어, 일일히 더하는 것이 아닌 모든 동작을 한번에 하도록 처리하여 주는 것이 주요 목표입니다. O(N) -> O(1) 아이디어 index 2~4까지의 값을 구하려고 합니다. 이 때 부분합은 arr[2]+arr[3]+arr[4]라고 할 수도 있지만, sum[5]-sum[2]와도 같습니다. 만약 부분적으로 특정 값을 빼고 넣어준다고 하여 봅시다. [4,4,4,4,4] 라는 배열에서 1부터 마지막 index까지 6을 추가 2부터 3까지 index만 5를 추가한다고 해봅시..
-
[프로그래머스] - 파괴되지 않은 건물Algorithm/프로그래머스 2022. 9. 24. 00:20
문제 [프로그래머스] - 파괴되지 않은 건물 https://school.programmers.co.kr/learn/courses/30/lessons/92344 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] N x M 크기의 행렬 모양의 게임 맵이 있습니다. 이 맵에는 내구도를 가진 건물이 각 칸마다 하나씩 있습니다. 적은 이 건물들을 공격하여 파괴하려고 합니다. 건물은 적의 공격을 받으면 내구도가 감소하고 내구도가 0이하가 되면 파괴됩니다. 반대로,..
-
[프로그래머스] - 풍선 터트리기Algorithm/프로그래머스 2022. 9. 21. 01:54
문제 [프로그래머스] - 풍선 터트리기 https://school.programmers.co.kr/learn/courses/30/lessons/68646 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 일렬로 나열된 n개의 풍선이 있습니다. 모든 풍선에는 서로 다른 숫자가 써져 있습니다. 당신은 다음 과정을 반복하면서 풍선들을 단 1개만 남을 때까지 계속 터트리려고 합니다. 임의의 인접한 두 풍선을 고른 뒤, 두 풍선 중 하나를 터트립니다. 터진 풍선으로 인해 풍선들 사이에 빈 공간이 생겼다면, 빈 공간이 없도록 풍선들을 중앙으..
-
[프로그래머스] - 여행경로Algorithm/프로그래머스 2022. 9. 16. 18:34
문제 [프로그래머스] - 여행경로 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3..
-
[프로그래머스] - 섬 연결하기Algorithm/프로그래머스 2022. 9. 16. 18:27
문제 [프로그래머스] - 섬 연결하기 https://school.programmers.co.kr/learn/courses/30/lessons/42861# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 n개의 섬 사이에 다리를 건설하는 비용(costs)이 주어질 때, 최소의 비용으로 모든 섬이 서로 통행 가능하도록 만들 때 필요한 최소 비용을 return 하도록 solution을 완성하세요. 다리를 여러 번 건너더라도, 도달할 수만 있으면 통행 가능하다고 봅니다. 예를 들어 A 섬과 B 섬 사이에 다리가 있고, B 섬과 C 섬 ..
-
[프로그래머스] - 거스름돈Algorithm/프로그래머스 2022. 9. 15. 16:21
문제 [프로그래머스] - 거스름돈 https://school.programmers.co.kr/learn/courses/30/lessons/12907 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 Finn은 편의점에서 야간 아르바이트를 하고 있습니다. 야간에 손님이 너무 없어 심심한 Finn은 손님들께 거스름돈을 n 원을 줄 때 방법의 경우의 수를 구하기로 하였습니다. 예를 들어서 손님께 5원을 거슬러 줘야 하고 1원, 2원, 5원이 있다면 다음과 같이 4가지 방법으로 5원을 거슬러 줄 수 있습니다. 1원을 5개 사용해서 거슬러..