알고리즘/백준42 [백준]1107 리모컨 c++ 간과한 부분이 너무 많았던 문제 첫번째로 0을 검사할 때 리모컨에서 0을 입력할수가 없지만 더 내려갈 수 없으므로 더 검사할수가 없어 cnt가 0이되는경우^^ 두 번째로 리모컨으로 입력할 수 없는 숫자의 개수가 0이지만 100에서 +를하거나 -를 한것이 그 숫자를 입력하는 것보다 더 적은 횟수가 들때 ex) 99 0 99를 입력하는 것보자 100에서-1을 하는 것이 더 적은 횟수가 든다. *고칠점 1. 숫자를 검사할때 문자열로 바꾸지 않고 이렇게 검사하면 좋았을 것 같다. while (a) { if (error[a % 10]) return -1; a /= 10; cnt++; } 2. 답을 100에서 +,-해서 갈 수 있는 답으로 초기화 해주기 ans = abs(n-100); 3. 백준 아이디 alread.. 2022. 8. 4. [백준] 10971 외판원 순회 2 c++ 백트래킹 문제였는데 조건을 꼼꼼히 체크를 안해서 틀렸다. 원형으로 도는 것이기 때문에 0->1->2->3 이나 2->3->0->1은 같은 경우여서 무조건 시작을 0(or 아무 시작점)이라고 두면 된다. 그리고 sum에 마지막점과 시작점의 비용도 추가해주어야한다. 또한 마지막점과 시작점이 이어져있는지도 체크해주어야한다. #include #include using namespace std; int N; bool visit[10]; int W[10][10]; int minT = 1e9,sum=0; int a[10]; int b[10]; void dfs(int n,int depth) { if (depth == N) { /*for (int i = 0; i < N; i++) cout 2022. 8. 4. [백준] 1759 암호만들기 c++ 주어진 C개의 알파벳들로 L자리 암호를 만들면 되는 문제였다. 조건이 몇개 더 있는데 1. 모음 1개 이상,자음 2개 이상 2. 오름 차순 정렬 3. 중복 X 백트레킹으로 조합을 뽑아서 1번 조건을 체크해주고 출력을 하면 된다. 오름 차순 정렬이므로 조합을 뽑기 전에 미리 정렬을 해주었다. 그리고 백트레킹 함수에서 i를 index로 해주어서 이미 뽑힌 알파벳보다 더 뒤에 있는 알바벳만 추가될 수 있게 해주었다. #include #include using namespace std; int L, C,cntV; char alpa[15]; bool check[15]; char temp; //0~26 // 뽑는다 (오름차순)/ 개수 체크 char ans[15]; void backtracking(int depth,.. 2022. 7. 8. [백준] 2503 숫자야구 c++ 정답률은 높은데 나는 너무 어려웠다. 설마 모든케이스에 대해서 하나하나 다 확인해보는 거겠어?하고 규칙을 찾으려고 했는데 너무 복잡했다. 규칙을 찾아서 추리는 것이 아니라 그냥 모두 확인해보면 되는 문제였다. 123~989 숫자중에 중복이 각 자리의 숫자들은 서로 달라야하므로 제외하고 1~9까지만 들어갈 수 있으므로 0이 들어가는 수도 제외한 다음에 스트라이크와 볼 개수가 같은지를 체크하고 다르면 true로 바꾸어준다. 마다 123~989까지 모두 검사를 해주고 num 배열에서 false로 남은것의 개수를 세어줘서 출력해줬다. #include #include using namespace std; int N,cnt; bool num[1000]; string q,temp; int strike, ball; i.. 2022. 7. 8. 이전 1 ··· 4 5 6 7 8 9 10 11 다음