일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vector
- coding
- Operating System
- 북리뷰
- bfs
- 구현
- 정석학술정보관
- 자료구조
- 알고리즘
- 스택
- Stack
- 코딩
- 코테
- 그래프
- OS
- 문제풀이
- 오에스
- cs
- 백준
- 오퍼레이팅시스템
- Computer science
- DP
- 컴퓨터공학과
- 컴공과
- 정석
- 브루트포스
- 개발
- c++
- 너비우선탐색
- 컴공
- Today
- Total
목록coding (150)
Little Jay
아래의 문제 15650번과 유사한 문제이다 #include #include #define MAX 9 using namespace std; int n, m; int arr[MAX] = { 0, }; bool visited[MAX] = { 0, }; void dfs(int num, int cnt) { if (cnt == m) { for (int i = 0; i < m; i++) cout m; dfs(1, 0); return 0; }
이번에는 중복순열 문제이다 이전에는 중복을 체크하면서 DFS를 했는데, 이번에는 중복을 허용하기때문에 그 부분만 주석처리 해주어 쉽게 풀 수 있었다. #include #include #define MAX 9 using namespace std; int n, m; int arr[MAX] = { 0, }; bool visited[MAX] = { 0, }; void dfs(int cnt) { if (cnt == m) { for (int i = 0; i < m; i++) cout m; dfs(0); return 0; }
백트래킹에 들어가있지만, DFS로 풀 수 있는것 같다. 둘이 조금은 비슷한 성향을 가진 문제인 것 같다. #include #include #define MAX 9 using namespace std; int n, m; int arr[MAX] = { 0, }; bool visited[MAX] = { 0, }; void dfs(int num, int cnt) { if (cnt == m) { for (int i = 0; i < m; i++) cout m; dfs(1, 0); return 0; }
백준 풀다가 너무 현타와서 조금 쉬운 문제들을 풀어보는 중 stack을 활용한 괄호 확인 문제이다. #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); string s; while (getline(cin, s)) { stack braces; bool flag = true; if (s == "#") { break; } for (int i = 0; i < s.size(); i++) { if (s[i] == '(') { braces.push('('); } else if (s[i] == '[') { braces.push('['); } else if (s[i] == '{') { br..
일반적으로 경제학에서 설명하는 손익분기점을 찾는 것이 아니라 이익이 발생하는 시점을 손익분기점으로 한다 처음에는 O(N)으로 풀었는데 시간초과가 떴다. 생각을 하면 이걸 O(1)로 풀 수 있다. #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); long long a, b, c; cin >> a >> b >> c; if (b >= c) { cout
C++ Array 연습 기초 첫 번째는 무지성 string으로 푸는 방법이다. O(n^2)로 간단하게 풀 수 있는 문제이다. 처음 for문은 char 알파벳이 돈다 이제 다음 for문은 입력된 string 안에있는 char과 처음 for문의 알페벳이 몇개나 일치하는지 확인한다. #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); string s; cin >> s; for (char i = 'a'; i
간단한 파스칼 삼각형 구하는 문제 #include #include using namespace std; int bridges[31][31]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); for (int i = 1; i t; while (t--) { int n, m; cin >> n >> m; cout
Mooyo Mooyo == 뿌요뿌요....? 문제가 영어라 해석이 들어가야 한다. 문제를 잠시 분석을 한다면, n X 10의 줄을 입력을 받아서 뿌요뿌요 게임을 실행시켜주면 된다. 먼저 같은 숫자가 k개 이상 연결 되어 있다면 0으로 만들어준다. 이 과정을 dfs로 탐색하고 바꿔준다. 그 후에 중력의 영향을 받아 아래로 블럭들을 아래로 당겨주어야 한다. 아래로 다 당겨주었다면 계속해서 블럭들을 터뜨리고.... 이 과정을 계속 반복해주면 된다. 범위 잘못 설정해서 여러번 틀렸다..... 그래프 문제는 진짜 한 시간 이상 걸려서 푸는데 코딩좀 잘 하고 싶어요ㅠㅠ #include #include using namespace std; int n, k; char table[100][10]; bool visited..
생각보다 엄청 더러웠던(?) 문제였다. 역시 브루트포스는 항상 그렇고 그렇다...... CCTV 구조체를 하나 만들어서 CCTV 종류(몇번인지), 몇열, 몇행에 저장되어있는지에 대한 정보를 저장하고 rotation이라는 정수 배열에서 회전 가능한 범위를 넣어주었다. 디버깅을 하면 이제 input 하고 dfs로 탐색이 들어가는데, 이제 중요한점은 백트랙킹을 해야한다는 것이다. 이 문제의 핵심인 부분이다. 예를 들어서 01000 00000 00000 00000 00000 이런 cctv가 있으면, 얘는 아래쪽으로 탐색을 해야 하는 것이다 그래서 이 부분에 대해서 각각의 경우에 대해서 백트랙킹을 해주면 된다. #include #define MAX 8 using namespace std; struct CCTV {..
string을 잘 인덱싱하면 되는 문제 #include #include using namespace std; int main() { string s; cin >> s; int alphabet = 0; for (int i = 0; i < s.size(); i++) { if (s[i] == 'c') { if (s[i + 1] == '=') { i++; alphabet++; } else if (s[i + 1] == '-') { i++; alphabet++; } else alphabet++; } else if (s[i] == 'd') { if (s[i + 1] == '-') { i++; alphabet++; } else if (s[i + 1] == 'z' && s[i + 2] == '=') { i += 2; a..