> >
본문 바로가기

Algorithm/BOJ

(27)
[BOJ] 15683번 감시 #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)using namespace std;const int MAXN = 10;int n, m, sz, res = 1e6;int arr[MAXN][MAXN];bool visited[MAXN][MAXN];vector> cctv;int dx[] = {-1, 0, 1, 0}; // int dy[] = {0, 1, 0, -1};void solved(int x, int y, int i){ i %= 4; while(true){ x += dx[i]; y += dy[i]; if (!(x >= 0 && x = 0 && y > n >> m; for (int i = 0..
[BOJ] 19321번 Longest Increasing Subsequence #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)using namespace std;const int MAXN = 100005;int arr[MAXN];bool cmp(pair p1, pair p2){ if (p1.first == p2.first){ return p1.second > p2.second; } return p1.first > n; vector> v; for (int i = 1; i > num; v.push_back({num, i}); } sort(v.begin(), v.end(), cmp); for (int i = 0; i  문제가 정말 짧은데 뭐라고 하는지 잘 모르겠었다. ..
[BOJ] 25759번 들판 건너가기 #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)using namespace std;const int MAXN = 100005;int arr[MAXN];int DP[MAXN][105];int main(){ FASTIO; int n; cin >> n; for (int i = 1; i > arr[i]; memset(DP, -1, sizeof(DP)); DP[1][arr[1]] = 0; for (int i = 2; i  가장 먼저 떠오르는 생각은 DP[i] = DP[j] + (arr[i] - arr[j])^2 ( 1당연히 O(N^2)으로 시간초과를 받는 해결법이다. 조건을 보다가 Ai가 이렇게 수치가 작아야할 이유가 없다..
[BOJ] 1062번 가르침 #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)using namespace std;const int MAXN = 55;int n, k, res;string s[MAXN];bool visited[26];void Backtracking(int cnt, int idx){ if (cnt == k){ int tmp = 0; for (int i = 0; i > n >> k; for (int i = 0; i > s[i]; visited['a' - 'a'] = true; visited['n' - 'a'] = true; visited['t' - 'a'] = true; visited['i' - 'a'] = tr..
[BOJ] 1759번 암호 만들기 #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)using namespace std;const int MAXN = 20;int l, c;vector v, s;void Backtracking(int cnt, int idx){ if (cnt == l){ int vo = 0; for (int i = 0; i > l >> c; for(int i = 0; i > inp; v.push_back(inp); } sort(v.begin(), v.end()); Backtracking(0, 0); return 0;} - 정렬합니다.- Backtracking(cnt, idx)에 대해서 i를 선택하면 Back..
[BOJ] 18428번 감시 피하기 #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)using namespace std;const int MAXN = 7;int n;char arr[MAXN][MAXN];bool visited[MAXN][MAXN];bool validation(){ memset(visited, false, sizeof(visited)); for (int i = 0; i = 0; x--){ if (arr[x][j] == 'O') break; visited[x][j] = true; } for (int x = i + 1;..
[BOJ] 29900번 No Change #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)using namespace std;const int MAXN = 1005;int arr[MAXN];int main(){ FASTIO; int n; cin >> n; for (int i = 0; i > arr[i]; sort(arr, arr + n); int cur = 0; for (int i = 0; i cur + 1) break; cur += arr[i]; } cout  - 정렬을 합니다.- 현재의 수열의 수가 cur + 1보다 크다면 cur + 1은 만들어질 수 없는 수입니다.
[BOJ] 2529번 부등호 #include #define FASTIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)using namespace std;const int MAXN = 10;int k;vector v;vector res;char op[MAXN];bool visited[MAXN];void backtracking(int cnt, int cur){ if (cnt == k + 1){ string tmp = ""; for (int i = 0; i > k; for (int i = 0; i > op[i]; for (int i = 0; i  Backtracking- 조건: 첫 수를 정하고 op 조건을 확인하면서 vector에 넣는다.- 종결: op보다 1개 더..