백트래킹 [백준/C++]14889번_ 스타트와 링크 최근에 너무 바빴어서 열심히 백준을 업로드하지 못했습니다. 다시 정신을 차리려 했지만 과제가 너무 많고, 이제 곧 중간고사더라고요. 그래도 하는 데 까지 최선을 다해서 열심히 풀어보겠습니다! 문제는 다음과 같습니다. 이 문제는 참고로 삼성 SW 역량 테스트 기출 문제에 나왔던 문제라고 합니다. ⭐️문제의 핵심 포인트는 다음과 같습니다.⭐️ 1. 두 그룹으로 나누기 (분할) 2. 각각 그룹의 ... 백준백트래킹백준 [C언어] 백준 9663 : N-Queen 흐름 n퀸 푸는 방법을 알았다. 여기서 한번 설명듣고 클론코딩해보고, 디버깅하면서 이해먼저했다. 그리고 안보고 다시 한번 해보고, 디버깅하면서 고쳤다. 이해 해버렸다. 주석으로 내가 헷갈렸던 부분과 논리를 적어보겠다.... 백준백트래킹CC [백준] 10819번 차이를 최대로 - Java, 자바 난이도 실버 2 문제 풀이 백트래킹 문제 갯수가 n인 조합을 구한다. 백트래킹을 사용하여 depth가 n이 되도록 재귀를 수행하고, 조합의 결과는 result 배열에 저장한다. depth가 n일 때 = 갯수가 n인 조합의 경우가 나왔을 때, 차이를 최대로 만드는 공식을 사용해 합을 구한다. 합이 최대가 되도록 Math.max함수를 사용해 최댓값을 저장한다. 코드... 백준백트래킹백준 [백준] 2529번 부등호 - Java, 자바 난이도 실버 2 문제 코드... 백트래킹백트래킹 [BOJ] 15650 - N과 M(2) 1부터 N까지의 수 중 M개를 고른 수열을 오름차순으로 출력해야 한다. 우선 재귀를 통해 풀 수 있겠다는 생각이 들었다. 그리고 간만에 구현해보는 DFS에 정신이 아득해질 무렵 작동하는 코드를 만들어낼 수 있었다(...). 일반적인 DFS에서 쓰는 방문 여부 배열은 이 문제에서는 쓸 필요가 없었다. 원 데이터가 사전순으로 이미 정렬되어 있어 다음 탐색 범위를 조정하는 것 만으로 중복 탐색을 ... Baekjoon Online Judge백트래킹Baekjoon Online Judge [백준/C++]9663번_N-Queen 문제는 다음과 같습니다. 어려웠습니다. 저도 유튜브나 다른 자료를 참고해서 이 문제를 이해하고 해석하였으며 그 이후에 풀었습니다. 백트래킹의 정석과도 같은 문제인 것 같습니다. 저는 행을 기준으로, 퀸을 배치하였습니다. row[k]=i; 이는 k행의 i번째 자리에 퀸을 배치하였음을 의미합니다. 해당 자리에 퀸을 배치하였다고 가정하고, 이 자리에 놓을 수 있다면 (➡️ 자리에 놓을 수 있는지에... 백준백트래킹백준 [백준/C++]14888번_연산자 끼워넣기 문제는 다음과 같습니다. 문제를 읽자마자, 연산자에 대해서 dfs를 수행하면 바로 끝나겠다라고 생각하고 코드를 짰습니다. 배열을 이용하여 💡연산자는 +, -, *, % 에 대해서 각각 인덱스 0, 1, 2, 3 값으로 나타내고, 💡해당 연산자의 개수를 인덱스의 값으로 나타냈습니다. 전체 코드는 다음과 같습니다.🙆🏻♀️... 백준백트래킹백준 [C언어] 백준 15652 : N과 M (4) 같다. 이사람 코드다. 유형을 익히자. 16560에서 cut을 살리고 범위를 i이하로 수정해주면 된다... C백준백트래킹C [C++] 백준 15651 : N과 M (3) 사실상 백트래킹 문제라고 볼 수 있나? 라고 푼 문제다. 모든 경우의 수를 다 구하면 되므로 방문 여부를 아예 따지지 않아도 된다. 따라서 그냥 재귀함수만 계속 반복하며 모든 경우에 대한 수를 구해주면 된다.... 백트래킹2022.03알고리즘cpp백준2022.03 [C언어] 백준 15650 : N과 M (2) 이번에도 이 사람 도움을받았다.. 이 4가지 유형을 알아두고 그때그때 계속 꺼내서보자. 재귀문제를 좀 찾아서 풀어봐야겠다. 풀이 15649 문제는 중복되는 수까지 출력해주게 했는데 이는 DFS가 도는데 두번째 for문에서 i가 항상 1부터 시작하기 때문이다 ! 왜냐하면 i =2일때 DFS(1)을 시작하면 (2,1)도 출력하게 되면 앞서 출력된 (1,2)와 겹치게 되는데 이때 cut이라는 변수... C백준백트래킹C [C언어] 백준 15651 : N과 M (3) 먼저 나는 N과 M (3)을 진행했는데, 이유는 이게 제일 1~4중에서 쉬워보였기 때문이다. 조건없이 출력만 하면 되기에 이거를 먼저 잡고가야겠다고 생각했다. n값과 m값을 입력받을 때에 어떻게 진행해야 되는지 몰랐다. 또한 백트래킹이 무엇인지 몰랐다. 그래서 구글링을 했다. 어떻게 출력하는지 알면, 나머지 1,2,4번도 예외처리만 하면 될 것 같아서 답을 보고 이해하는방식으로 진행했다. 답... C백준백트래킹C [C언어] 백준 15649 : N과 M (1) 사진이 조금 잘렸는데, 그냥 순열을 출력하면 된다. N과 M(3)을 보고 난 뒤 다른건 혼자 할 수 있을거라고 생각했는데, 아직 그정도 실력이 안되는 것 같다. 문제유형을 익히고, 양치기를 하더라도 실력을 단기간에 쌓고싶다. 문제유형을 익혀보자. 처음에는 순열을 구하는 법을 구글링했다. swap을 사용하면서 정렬했다. 하지만 이 문제는 swap을 굳이 사용할 필요가 없다. 결국 답을 보고 익... C백준백트래킹C [C++] 백준 15652 : N과 M (4) 이번 문제도 백트래킹에 수학적인 조건을 주어 푸는 문제였다. 앞에 나오는 수보다 뒤에 나오는 수가 같거나 크도록 조건을 주어, 해당 조건에 해당하면 순열으르 저장할 수 있도록 하는 것이다.... 백트래킹2022.03알고리즘cpp백준2022.03 [C++] 백준 15650 : N과 M (2) 백트래킹 연습용 문제 백트래킹이라고 해서 방문여부에 변화를 무조건 주어 문제를 풀 생각을 하지 않아도 좋다. 수학적으로 접근해도 괜찮다.... 백트래킹2022.03알고리즘cpp백준2022.03 [C++] 백준 14502 : 연구소 메모리 제한 또는 시간 제한이 걸릴까봐 걱정되었는데 512MB, 2초정도면 모든 임시값을 copy해도 괜찮을 정도라는 것을 알게 되었다. 벽 3개 세우기는 백트래킹(DFS)를 이용한다. 순열을 구하는 것과 같다. 모든 경우의 수에서 3개씩 뽑아 줄세우면 된다. STL 라이브러리의 algorithm을 사용하면 copy를 한 줄에 끝낼 수 있다. copy(copy할 것의 첫 주소, copy할 것... 백트래킹2022.03BFS알고리즘DFS삼성cpp백준2022.03 [C++] 백준 14888 : 연산자 끼워넣기 드디어 인터넷을 전혀 참고하지 않고 삼성 기출 문제를 풀 수 있었다! 물론 백트래킹으로 풀어야한다는 것은 너무 명백했고, 공부한 것을 바탕으로 응용해서 문제를 푼 것이긴 하지만 말이다. if와 else if 주의하기, if문 만족하면 else if문은 돌아가지 않는다. 첫 수는 A[0]부터 시작한다. 따라서 나머지 연산자는 cal[1]을 사용하고 A[1]과 계산한다. index를 맞추어서 계... 백트래킹2022.03알고리즘삼성cpp백준2022.03 [백준 10971] 외판원 순회 2 N개의 도시를 모두 순회할 때 필요한 경비의 최소값을 구하는 문제이다. 마지막 도착지에서 끝나는 것이 아니고, 마지막 여행지 -> 처음 출발지로 돌아와야 한다. 각 도시간 이동하는데 드는 비용이 0이라면, 도시간 이동이 불가능함을 나타낸다. 즉, 이 경우에는 모든 도시를 순회할 수 없다.... Java백트래킹Java
[백준/C++]14889번_ 스타트와 링크 최근에 너무 바빴어서 열심히 백준을 업로드하지 못했습니다. 다시 정신을 차리려 했지만 과제가 너무 많고, 이제 곧 중간고사더라고요. 그래도 하는 데 까지 최선을 다해서 열심히 풀어보겠습니다! 문제는 다음과 같습니다. 이 문제는 참고로 삼성 SW 역량 테스트 기출 문제에 나왔던 문제라고 합니다. ⭐️문제의 핵심 포인트는 다음과 같습니다.⭐️ 1. 두 그룹으로 나누기 (분할) 2. 각각 그룹의 ... 백준백트래킹백준 [C언어] 백준 9663 : N-Queen 흐름 n퀸 푸는 방법을 알았다. 여기서 한번 설명듣고 클론코딩해보고, 디버깅하면서 이해먼저했다. 그리고 안보고 다시 한번 해보고, 디버깅하면서 고쳤다. 이해 해버렸다. 주석으로 내가 헷갈렸던 부분과 논리를 적어보겠다.... 백준백트래킹CC [백준] 10819번 차이를 최대로 - Java, 자바 난이도 실버 2 문제 풀이 백트래킹 문제 갯수가 n인 조합을 구한다. 백트래킹을 사용하여 depth가 n이 되도록 재귀를 수행하고, 조합의 결과는 result 배열에 저장한다. depth가 n일 때 = 갯수가 n인 조합의 경우가 나왔을 때, 차이를 최대로 만드는 공식을 사용해 합을 구한다. 합이 최대가 되도록 Math.max함수를 사용해 최댓값을 저장한다. 코드... 백준백트래킹백준 [백준] 2529번 부등호 - Java, 자바 난이도 실버 2 문제 코드... 백트래킹백트래킹 [BOJ] 15650 - N과 M(2) 1부터 N까지의 수 중 M개를 고른 수열을 오름차순으로 출력해야 한다. 우선 재귀를 통해 풀 수 있겠다는 생각이 들었다. 그리고 간만에 구현해보는 DFS에 정신이 아득해질 무렵 작동하는 코드를 만들어낼 수 있었다(...). 일반적인 DFS에서 쓰는 방문 여부 배열은 이 문제에서는 쓸 필요가 없었다. 원 데이터가 사전순으로 이미 정렬되어 있어 다음 탐색 범위를 조정하는 것 만으로 중복 탐색을 ... Baekjoon Online Judge백트래킹Baekjoon Online Judge [백준/C++]9663번_N-Queen 문제는 다음과 같습니다. 어려웠습니다. 저도 유튜브나 다른 자료를 참고해서 이 문제를 이해하고 해석하였으며 그 이후에 풀었습니다. 백트래킹의 정석과도 같은 문제인 것 같습니다. 저는 행을 기준으로, 퀸을 배치하였습니다. row[k]=i; 이는 k행의 i번째 자리에 퀸을 배치하였음을 의미합니다. 해당 자리에 퀸을 배치하였다고 가정하고, 이 자리에 놓을 수 있다면 (➡️ 자리에 놓을 수 있는지에... 백준백트래킹백준 [백준/C++]14888번_연산자 끼워넣기 문제는 다음과 같습니다. 문제를 읽자마자, 연산자에 대해서 dfs를 수행하면 바로 끝나겠다라고 생각하고 코드를 짰습니다. 배열을 이용하여 💡연산자는 +, -, *, % 에 대해서 각각 인덱스 0, 1, 2, 3 값으로 나타내고, 💡해당 연산자의 개수를 인덱스의 값으로 나타냈습니다. 전체 코드는 다음과 같습니다.🙆🏻♀️... 백준백트래킹백준 [C언어] 백준 15652 : N과 M (4) 같다. 이사람 코드다. 유형을 익히자. 16560에서 cut을 살리고 범위를 i이하로 수정해주면 된다... C백준백트래킹C [C++] 백준 15651 : N과 M (3) 사실상 백트래킹 문제라고 볼 수 있나? 라고 푼 문제다. 모든 경우의 수를 다 구하면 되므로 방문 여부를 아예 따지지 않아도 된다. 따라서 그냥 재귀함수만 계속 반복하며 모든 경우에 대한 수를 구해주면 된다.... 백트래킹2022.03알고리즘cpp백준2022.03 [C언어] 백준 15650 : N과 M (2) 이번에도 이 사람 도움을받았다.. 이 4가지 유형을 알아두고 그때그때 계속 꺼내서보자. 재귀문제를 좀 찾아서 풀어봐야겠다. 풀이 15649 문제는 중복되는 수까지 출력해주게 했는데 이는 DFS가 도는데 두번째 for문에서 i가 항상 1부터 시작하기 때문이다 ! 왜냐하면 i =2일때 DFS(1)을 시작하면 (2,1)도 출력하게 되면 앞서 출력된 (1,2)와 겹치게 되는데 이때 cut이라는 변수... C백준백트래킹C [C언어] 백준 15651 : N과 M (3) 먼저 나는 N과 M (3)을 진행했는데, 이유는 이게 제일 1~4중에서 쉬워보였기 때문이다. 조건없이 출력만 하면 되기에 이거를 먼저 잡고가야겠다고 생각했다. n값과 m값을 입력받을 때에 어떻게 진행해야 되는지 몰랐다. 또한 백트래킹이 무엇인지 몰랐다. 그래서 구글링을 했다. 어떻게 출력하는지 알면, 나머지 1,2,4번도 예외처리만 하면 될 것 같아서 답을 보고 이해하는방식으로 진행했다. 답... C백준백트래킹C [C언어] 백준 15649 : N과 M (1) 사진이 조금 잘렸는데, 그냥 순열을 출력하면 된다. N과 M(3)을 보고 난 뒤 다른건 혼자 할 수 있을거라고 생각했는데, 아직 그정도 실력이 안되는 것 같다. 문제유형을 익히고, 양치기를 하더라도 실력을 단기간에 쌓고싶다. 문제유형을 익혀보자. 처음에는 순열을 구하는 법을 구글링했다. swap을 사용하면서 정렬했다. 하지만 이 문제는 swap을 굳이 사용할 필요가 없다. 결국 답을 보고 익... C백준백트래킹C [C++] 백준 15652 : N과 M (4) 이번 문제도 백트래킹에 수학적인 조건을 주어 푸는 문제였다. 앞에 나오는 수보다 뒤에 나오는 수가 같거나 크도록 조건을 주어, 해당 조건에 해당하면 순열으르 저장할 수 있도록 하는 것이다.... 백트래킹2022.03알고리즘cpp백준2022.03 [C++] 백준 15650 : N과 M (2) 백트래킹 연습용 문제 백트래킹이라고 해서 방문여부에 변화를 무조건 주어 문제를 풀 생각을 하지 않아도 좋다. 수학적으로 접근해도 괜찮다.... 백트래킹2022.03알고리즘cpp백준2022.03 [C++] 백준 14502 : 연구소 메모리 제한 또는 시간 제한이 걸릴까봐 걱정되었는데 512MB, 2초정도면 모든 임시값을 copy해도 괜찮을 정도라는 것을 알게 되었다. 벽 3개 세우기는 백트래킹(DFS)를 이용한다. 순열을 구하는 것과 같다. 모든 경우의 수에서 3개씩 뽑아 줄세우면 된다. STL 라이브러리의 algorithm을 사용하면 copy를 한 줄에 끝낼 수 있다. copy(copy할 것의 첫 주소, copy할 것... 백트래킹2022.03BFS알고리즘DFS삼성cpp백준2022.03 [C++] 백준 14888 : 연산자 끼워넣기 드디어 인터넷을 전혀 참고하지 않고 삼성 기출 문제를 풀 수 있었다! 물론 백트래킹으로 풀어야한다는 것은 너무 명백했고, 공부한 것을 바탕으로 응용해서 문제를 푼 것이긴 하지만 말이다. if와 else if 주의하기, if문 만족하면 else if문은 돌아가지 않는다. 첫 수는 A[0]부터 시작한다. 따라서 나머지 연산자는 cal[1]을 사용하고 A[1]과 계산한다. index를 맞추어서 계... 백트래킹2022.03알고리즘삼성cpp백준2022.03 [백준 10971] 외판원 순회 2 N개의 도시를 모두 순회할 때 필요한 경비의 최소값을 구하는 문제이다. 마지막 도착지에서 끝나는 것이 아니고, 마지막 여행지 -> 처음 출발지로 돌아와야 한다. 각 도시간 이동하는데 드는 비용이 0이라면, 도시간 이동이 불가능함을 나타낸다. 즉, 이 경우에는 모든 도시를 순회할 수 없다.... Java백트래킹Java