분류 전체보기
-
백준 1759 - 암호만들기백준 algorithm 2020. 6. 17. 15:44
=> 입력값의 범위가 작기 때문에 브루트 포스로 해결할 수 있습니다. ** 본인이 작성한 코드에는 정렬의 과정이 표현되어있지 않기 때문에, 함수 진입 전에 alpha vector의 sort과정이 필요합니다. #include #include #include #include using namespace std; bool check(string &password) { int conso=0; int vowel=0; for(char x : password) { if(x == 'a' || x=='e' ||x=='i' || x == 'o' || x== 'u') { vowel ++; } else{ conso++; } } return conso >= 2 && vowel >=1; } void go(int n, vector..
-
백준 2839 - 설탕 배달백준 algorithm 2020. 6. 5. 23:02
=> 브루트 포스 문제는 아니지만, 브루트 포스 문제로 해결하였습니다. 5를 3보다 더 많이 써야 효율적인 알고리즘입니다. 5를 더 많이 쓰기 위해 이중for문의 안쪽에 5를 위치하였습니다. 그후 3를 바깥쪽 for문에 위치하였습니다. 입력 받은 값과 i j와 3 5 를 곱한 값이 같은지 확인합니다. 이중for문이 끝나도 원하는 값이 없을 경우 -1을 출력합니다. #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int N; cin >> N; int FiveLimit = (N / 5); int ThreeL..
-
백준 10973 - 이전 순열백준 algorithm 2020. 6. 5. 22:23
=> 이전에 풀었던 다음 순열과 같은 문제입니다. => prev_permutation() 함수를 사용할 줄 안다면 쉽게 풀 수 있는 문제입니다. https://codingham.tistory.com/145 백준 10972 - 다음 순열 => STL의 Algorithm 헤더에는 next_permutation과 prev_permutation 함수가 있습니다. (Library) => 해당 함수를 통해 구현할 수 있는 간단한 문제입니다. => 시간이 될 때 직접 구현해보는 방향으로 다시 풀어보.. codingham.tistory.com => 위의 포스팅을 확인하시면 쉽게 알 수 있습니다. #include #include #include #include using namespace std; int main() {..
-
백준 10972 - 다음 순열백준 algorithm 2020. 6. 5. 22:12
=> STL의 Algorithm 헤더에는 next_permutation과 prev_permutation 함수가 있습니다. (Library) => 해당 함수를 통해 구현할 수 있는 간단한 문제입니다. => 시간이 될 때 직접 구현해보는 방향으로 다시 풀어보겠습니다. => 해당 함수는 vector든, 일반 배열이든 해당 배열의 처음과 끝 부분을 매개변수로 주면 그다음 함수가 있을 경우, true를 return 하고, 아닐 경우 false를 return 합니다. => 또한 해당 배열을 다음 배열로 미리 바꾸어주는 동작을 합니다. #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false)..
-
백준 1316 - 그룹 단어 체커백준 algorithm 2020. 6. 4. 01:37
=> 단순한 구현 문제입니다. => string을 사용하고 bool형 array를 사용하여 구현할 수 있습니다. 알파벳을 담을 bool형 array를 생성합니다. 현재의 단어의 글자를 탐색하며 처음 나온 알파벳인지, 나왔던 알파벳인지를 확인합니다. 처음 나온 알파벳일 경우, 해당 알파벳을 방문했다고 표시해줍니다. 처음 나온 알파벳이 아닐 경우, 이전 알파벳과 같은 알파벳인지, 같지 않은지 확인합니다. 같지 않을 경우 그룹 단어에 해당이 안됩니다. 해당하는 경우에 okay라는 bool형 변수를 true로 바꿔주고, 해당 변수를 통해 단어의 개수를개수를 세는 cnt의 개수를 올릴지 말지 정합니다. 모든 순서가 끝나면 방문하였던 알파벳 arr를 초기화시켜주고, okay 변수 또한 초기화 시켜줍니다. => 저는..
-
백준 15651 - N과 M(3)백준 algorithm 2020. 6. 3. 21:43
=> 브루트 포스 문제입니다. => 기존의 N과 M 문제와의 차이점이라고 하면, visited [] 배열이 필요가 없다는 것입니다. => 해당 문제는 중복을 허용하기 때문에 visited가 없이 바로 코드를 짜면 가능합니다. https://codingham.tistory.com/142 백준 15650 - N과 M(2) => 브루트 포스 문제입니다. => 기존의 N과 M문제에서 힌트를 받아 풀 수 있습니다. => 오름차순으로 해야되는 것만 염두에 두면 풀 수 있습니다. https://codingham.tistory.com/41 백준 15649 - N과 M(1) 백트.. codingham.tistory.com https://codingham.tistory.com/41 백준 15649 - N과 M(1) 백트래..
-
백준 15650 - N과 M(2)백준 algorithm 2020. 6. 3. 21:23
=> 브루트 포스 문제입니다. => 기존의 N과 M문제에서 힌트를 받아 풀 수 있습니다. => 오름차순으로 해야되는 것만 염두에 두면 풀 수 있습니다. https://codingham.tistory.com/41 백준 15649 - N과 M(1) 백트래킹과 관련된 기초 문제이다. 본인은 백트레킹의 개념은 알지만 코드로 구현함에 있어 어려움을 겪어, 다른 사람들의 코드를 보며 썼다. 길이가 M이므로, cnt가 M이 될때까지 해당 Backtracking codingham.tistory.com => 위의 문제를 참조하면 쉽게 풀 수 있습니다. #include #include #include bool visited[10]; //false로 초기화 int arr[10]; using namespace std; voi..
-
백준 1748 - 수 이어 쓰기 1백준 algorithm 2020. 6. 2. 23:15
=> 브루트 포스 문제입니다. => 모든 숫자를 탐색하며 길이를 재 더할 경우, 시간초과의 늪에 빠지게 됩니다. #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int N; cin >> N; int ans=0; for(int i=1; i N; long long ans =0; for( int start=1, len=1; start N) { end = N; } ans += (long long)(end - start +1)*len; } cout