본문 바로가기

PS/BOJ75

[백준] 18111. 마인크래프트(c++) https://www.acmicpc.net/problem/18111어떠한 방법으로 풀까.. 높이를 어떻게 지정해야할까 고민하다 브루트포스로 푼 문제3중 for문을 돌려도 256*500*500 = 64,000,000 정도 되는데 일반적으로 o(n)에서 n이 1억정도일 때 1초 정도이기 때문에 시간 초과가 나지 않는다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;using ll = long long;void init() { cin.tie(0); cout.tie(0); ios_b.. 2024. 12. 19.
[백준] 30804. 과일 탕후루(c++) https://www.acmicpc.net/problem/30804완전히 브루트포스로 하다가 시간초과로 인해 방향을 틀었다..같은 방식이더라도 최적화 하는 방식을 찾는 것은 중요하다 생각했다.틀린 코드(시간초과)int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vector arr(n); // 몇개씩 가지고 있는지.. int save[10] = { 0, }; // 깊은 복사 값 int copy_save[10] = { 0, }; // 나중에 줄여나갈 때 초기값 int count = 0; // 최댓값 저장할 값 int ans = 0; fo.. 2024. 12. 18.
[백준] 21736. 헌내기는 친구가 필요해(c++) https://www.acmicpc.net/problem/21736전형적인 bfs 문제였다.문자열을 입력받는 방법을 다시 리마인드 할 수 있어 좋았다.#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;using ll = long long;void init() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false);}char arr[601][601];bool visited[601][601];int answer = 0.. 2024. 12. 16.
[백준] 15654. N과 M (5)(c++) https://www.acmicpc.net/problem/15654 배열을 받아주는게 추가된 문제다.사전순으로 출력하기 위해 받은 배열을 정렬 후 dfs 함수에 넘겨주면 된다.#include #include #include #include #include #include #include #include using namespace std;using ll = long long;vector arr;int ans[30];int visited[30];int n,m;void dfs(int idx) { if (idx == m) { for (int i = 0; i > n >> m; for (int i = 0; i > temp; arr.push_back(temp); } sort(arr.begin(), arr.en.. 2024. 4. 29.
[백준] 1469. 숌 사이 수열(c++) https://www.acmicpc.net/problem/1469 백트래킹 문제이다.조건이 조금 까다롭다.visited 배열은 해쉬방식으로 선언했다. 또한 arr배열(입력배열)은 -1로 설정해서 0을 놓치지 않도록 하는게 중요하다.백트래킹... 반드시 잘해야지#include #include #include #include #include #include #include #include using namespace std;using ll = long long;vector arr;int ans[30];int visited[30];int n;void dfs(int idx) { if (idx == 2 * n) { for (int i = 0; i > n; for (int i = 0; i > temp; arr... 2024. 4. 29.
[백준] 15652. N과 M (4)(c++) https://www.acmicpc.net/problem/15652 백트래킹 조건으로 비내림차순을 정의해주면 된다.#include #include #include #include #include #include #include #include using namespace std;using ll = long long;int arr[8], visited[9];int n, m;void dfs(int idx) { if (idx == m) { for (int i = 0; i = arr[idx - 1]) { arr[idx] = i; dfs(idx + 1); } }}int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m; df.. 2024. 4. 28.