목록알고리즘 문제 풀이 (61)
굥뷰를 햡시댜
https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 중복순열 문제입니다. 중복순열이란? 순열인데 중복의 경우도 고려하는 순열입니다. 다시 말하자면, 서로 다른 n개에서 r개를 중복을 허용하여 순서에 상관있게 나열하는 것을 말합니다! 바로 예로 들어보겠습니다. n = 4, r = 2이고 모집합이 {1,2,3,4}인 경우를 고려해봅시다. 원래 순열이라면 (1,2), (1,3), (1,4) (2,1), (2,3), (2,4) (3,1), (3..
https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 조합 문제입니다. 이전 게시물에서 말했다시피, 순열이란 서로 다른 n개에서 r개를 중복없이 골라 순서에 상관있게 나열하는 것을 말합니다. 하지만 조합의 경우에는 어떨까요? 이미 중학교, 고등학교 과정에서 배웠던 것과 같습니다! 조합은, 서로 다른 n개에서 순서에 상관 없이 r개를 뽑는 경우의 수를 말합니다. 여기서 순서에 상관 없다는 것은 뽑힌 순서가 다르더라도 내용물(원소)만 같다면 ..
https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 순열 문제입니다. 먼저, 순열은 서로 다른 n개에서 r개를 중복없이 골라 순서에 상관있게 나열하는 것을 말합니다. 여기서 순서에 상관있게 나열한다(?) 라는 것은 순서만 다르면 다른 녀석들로 구분한다는 것입니다. 예를 들어, {1,2,3,4} 4개의 원소가 있는 집합에서 2개를 중복없이 고른다고 가정합시다. (1,2), (1,3), (1,4) (2,1), (2,3), (2,4) (3,1..
https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 | 프로그래머스 programmers.co.kr 해시를 이용해 모든 조합의 수를 구하는 문제 모든 조합의 수는 각 종류를 곱하고 마지막에 1을 빼면 구할 수 있다. ex) 얼굴 - 동그란 안경, 검정 선글라스 상의 - 파란색 티셔츠 하의 - 청바지 겉옷 - 긴 코트 이렇게 있다고 했을 때 모든 조합의 수는 얼굴(2) * 상의(1) * 하의(1) * 겉옷(1) - 1 = 모든 조합의 수 로 구할 수 있다. #include #include #include using namespace std; map m; int solution(vector clothes) { int answer = ..
https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 | 프로그래머스 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 r programmers.co.kr 분류에는 해시라고 적혀있지만 해시로 풀지 않았다. 접두사의 길이 < ..
https://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+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘 programmers.co.kr dfs로 풀었습니다. 이 문제는 이진트리의 구조를 이해하는 것이 중요합니..
https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 | 프로그래머스 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크 programmers.co.kr 연결된 노드를 모두 dfs를 이용해 방문해줬다. #include #incl..
https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 | 프로그래머스 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 hit, target가 cog, words가 [hot,dot,dog,lot,log,cog]라면 hit -> hot -> dot -> dog -> programmers.co.kr 이 문제는 그래프를 따로 만들 수 있는지 없는지가 중요하다. - 풀이 방..