문제 링크 https://www.acmicpc.net/problem/15686 ◆문제 해결 및 설명◆ 문제 : N개의 치킨집만 남기고 폐업 시에, 각각의 치킨집과 집의 거리의 합들을 최소화하는 상황의 거리의 합을 구하여라. 우선 알고리즘적으로 생각나는것은 없었고, 조합을 통한 거리 계산이라는 문제임을 깨달았다. 문제는 C++로 조합을 만들 줄 모른다는것... 그래서 다른 분의 포스팅을 참고 하였다. https://ansohxxn.github.io/algorithm/combination/ (C++) 조합(Combination) 구현하기 조합이란 ansohxxn.github.io (좋은 블로그라 이후에도 많이 배워야 겠다.) Pair를 통해 치킨 집과 집의 좌표를 저장해주고 반복문을 통해서 각각 모든 집과 ..
문제 링크 https://www.acmicpc.net/problem/9658 ◆문제 해결 및 설명◆ 문제 : 턴을 번갈아가며 돌을 1 or 3 or 4개를 뺄 수 있고, 받은 돌의 갯수가 1이면 질 때, 최선의 플레이를 하였을 경우 이기는 사람을 구하여라 일단 나열을 해보았다. (먼저 받은 아이가 상근) 상근 패 상근 승(1,1) 상근 패(1,1,1) 상근 승(3,1) 상근 승(4,1) 상근 승(3,1,1,1) 상근 승(4,1,1,1) 상근 ?(7,6,? // 7,4,? // 7,3,?) = 창영 승 7전까지는 3을 받는것이 아니라면 상근이가 무조건 이긴다. (최선의 플레이 상황 가로에 나열) 하지만 8부터는 애매 모호해지는데 다음 턴인 창영이가 플레이하기 때문에 6, 4, 3을 받으면 창영이가 이기게 ..
문제 링크 https://www.acmicpc.net/problem/16974 ◆문제 해결 및 설명◆ 알고리즘 분류 : 다이나믹 프로그래밍, 분할 정복, 재귀 간단하게 문제를 풀이하자면 N 레벨 햄버거 내부는 {Bun (N-1레벨 햄버거) Petty (N-1레벨 햄버거) Bun} 로 이루어져 있을 때, 뒤에서 M장을 먹었을 때 패티의 갯수를 구하는 문제이다. N 레벨의 버거의 길이 공식은 N : (N-1) *2 + 3 이므로 대략 2의50승을 넘어갈 것이므로 이를 직접 뒤에서 지우며 실행할 수 는 없고, 동적 프로그래밍의 힘을 써야 한다. 아래는 4레벨 까지의 버거 내용이다. (레벨1의 버거는 띄어쓰기를 하지 않았다.)(P 와 B는 추가된 번과 패티이다. 0 : P 1 : BPPPB 2 : B BPPPB..
https://www.acmicpc.net/board/view/122419#post 글 읽기 - 문제는 풀었지만, segfault가 나옵니다. 댓글을 작성하려면 로그인해야 합니다. www.acmicpc.net ◆문제의 시작 문제에 대한 로직을 작성하고 제출하니 90%에서 segfault가 나왔다. 하지만 아무리 생각해도 범위 밖을 나가지 않았다고 생각해 백준에 질문을 올렸다. ●아래는 코드 전문이다. #include #include int main() { std::string array; getline(std::cin, array); int answer = array.size(); //문자열을 검사한다. for (int i = 0; i < array.size() - 1; i++) { //2글자로 이루어진..