반응형
    
    
    
  
                              Notice
                              
                          
                        
                          
                          
                            Recent Posts
                            
                        
                          
                          
                            Recent Comments
                            
                        
                          
                          
                            Link
                            
                        
                    | 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 31 | 
                            Tags
                            
                        
                          
                          - Node.js
- Nestjs
- 타입 챌린지
- Crawling
- TCP
- 쉬운 문제
- typescript
- 자바스크립트
- 수학
- 백준
- 가천대
- 프로그래머스
- socket
- type challenge
- 프로그래머스 레벨 2
- 타입스크립트
- Algorithm
- BFS
- HTTP
- javascript
- dfs
- 그래프
- 크롤링
- 레벨 1
- 알고리즘
- 소켓
- ip
- 문자열
- HTTP 완벽 가이드
- dp
                            Archives
                            
                        
                          
                          - Today
- Total
kakasoo
[DFS] 암호 만들기 (백준 1759번) 본문
반응형
    
    
    
  | 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include <iostream> #include <algorithm> #include <vector> using namespace std; char arr[15]; bool visited[15]; int l, c; int moum; int jaum; vector<char> str; void dfs(int cur, int start) {     if (cur == l && moum >= 1 && jaum >= 2)     {         for (int i = 0; i < l; i++)         {             cout << str[i];         }         cout << endl;         return;     }     for (int i = start; i < c; i++)     {         if (!visited[i])         {             visited[i] = true;             str.push_back(arr[i]);             if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u')             {                 moum++;                 dfs(cur + 1, i);                 moum--;                 str.pop_back();                 visited[i] = false;             }             else             {                 jaum++;                 dfs(cur + 1, i);                 jaum--;                 str.pop_back();                 visited[i] = false;             }         }     } } int main(void) {     cin >> l >> c;     for (int i = 0; i < c; i++)     {         cin >> arr[i];     }     sort(arr, arr + c);     dfs(0, 0); } | |
마음 같아서는 분류를 back tracking 이라고 기재하고 싶은데, 그러질 못하겠다.
내 코드가 너무 엉성하기 때문에.
모음과 자음의 개수가 문제 조건으로 있는 걸 보지 못해서 매개변수에 넣지 못했다.
그래서 나중에 전역 변수로 처리했다.
사실, 이렇게 해도 큰 문제는 없긴 하다, 백 트래킹의 정의에도 부합하기는 한다.
반응형
    
    
    
  '프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
| [node.js] 1로 만들기 ( 백준 1463 ) (0) | 2021.03.24 | 
|---|---|
| [백트래킹] 좋은 수열 (백준 2661번) (0) | 2020.03.06 | 
| [DP] 제곱수의 합 (백준 1699번) (0) | 2020.03.05 | 
| [수학] 제로 (10773번) (0) | 2020.03.04 | 
| [수학] 보물 (백준 1026번) (0) | 2020.03.04 | 
 
                   
                   
                  