본문 바로가기

문제풀이6

[C++, Hash] 프로그래머스 위장 문제 풀이 문제링크 https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 | 프로그래머스 programmers.co.kr 풀이 기본적인 접근은 맞았는데 응용력이 부족했던 문제이다. 조합을 구성할 때 선택하지 않는다는 선지도 같이 포함시켜 계산한다는 것이 포인트이다. 대분류의 조합들을 hash를 통해 count하고 선택하지 않는다는 선지를 포함시켜 각각 +1 해준 뒤 곱하면 되는 것이다. 그리고 스파이가 하루에 최소 한 개의 의상은 입으므로 모두 입지 않는다는 경우의 수를 빼면 답이 된다. #include #include #include using namespace std; int solution(vector clothes) { int answ.. 2019. 12. 11.
[C++] 코드그라운드 연습문제 프로그래밍 경진대회 문제풀이 문제링크 코드그라운드 연습문제 프로그래밍 경진대회 codeground Codeground is a real-time coding website open to those interested in software development and algorithms. www.codeground.org 간단하지만 효율적인 알고리즘이 잘 떠오르지 않는 문제이다. 문제에서 각 라운드 마다 받은 점수의 합이 제일 높은 사람이 우승한다고 하였는데 이는 우승자가 여러명일 수도 있다는 이야기이다. 이 조건이 이해가 되지 않아 질문이 많은 문제이다. 구하려는 것은 우승이 가능한 사람의 수이므로 각 점수에다 최대치(N)를 더한 점수가 어떤 기준점수를 넘는지 안넘는지 판단하면 된다. 여기서 기준점수는 다른 모든 점수들을 최저로 만.. 2019. 6. 19.
[C++,DP] 백준 2294번 동전2 문제풀이 문제링크 백준 2294번 동전2 2294번: 동전 2 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주어질 수도 있다. www.acmicpc.net DP문제를 하나 더 풀어보았다. 어려운 듯하면서 쉬운 듯 했다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include #include #include #include using namespace std; int main(){ int N,K; cin.. 2019. 3. 8.
[C++,DP] 백준 9465번 스티커 문제풀이 문제 링크 백준 9465번 스티커 9465번: 스티커 문제 상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 상냥이는 스티커를 이용해 책상을 꾸미려고 한다. 상냥이가 구매한 스티커의 품질은 매우 좋지 않다. 스티커 한 장을 떼면, 그 스티커와 변을 공유하는 스티커는 모두 찢어져서 사용할 수 없게 된다. 즉, 뗀 스티커의 왼쪽, 오른쪽, 위, 아래에 있는 스티커는 사용할 수 없게 된다. 모든 스티커를 붙일 수 없게된 상냥이는 각 스티커에 점 www.acmicpc.net "1로 만들기"와 같은 유형의 DP 문제이다. 처음에 in-place로 알고리즘을 짜려다 꼬여서 자꾸 오답이 나오길래 각설하고 그냥 따로 배열을 하나 더 만들어서 짜서 A.. 2019. 3. 4.
[C++,DP] 백준 1463번 1로 만들기 문제풀이, DP와 분할정복의 특징 문제링크 백준 1463번 1로 만들기 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 다시 복습하는 DP문제이다. 다시 DP 개념부터 집고 넘어가야겠다. DP(Dynanic Programing)란? 주어진 문제를 여러 개의 부분 문제들로 나누어 푼 다음, 그 결과들로 큰 문제를 푸는 방법을 말하며 여기서 DP의 Dynanic은 개발자가 아무 의미없이 붙인 거라고 한다... 큰 문제를 해결하기 쉽게 여러 개의 쉬운 부분 문제들을 풀어 해결하는 방법 정도로만 이해하면 될 것 같다. 분할정복이랑 비슷한 개념이기는 하나 분할정복은 문제를 분할했을 때 겹치는 문제가 발생하지 않지만, DP는 겹치는 문제가 발생하기 때문에 메모이제이션.. 2019. 2. 26.
[C++] 백준 2309번 일곱난장이 문제풀이 문제 링크 백준 2309번 일곱난장이 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net DP관련 문제인 줄 알았더니 알고보니 짐승공격 문제였다. ㅎㅎㅎ 항상 9개가 입력되고 7개의 답안이 출력된다는 점에 착안해서 9개 중에 골라낼 가짓수 2개를 모두 하나하나 대입하여 제외하고 나머지 7개의 합이 100이 되는지 판단하는 문제이다. vector와 sort함수를 이용하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 .. 2019. 2. 14.