본문 바로가기

전체 글199

[알고리즘 문제 해결 전략] 03 알고리즘 설계 패러다임 - 무식하게 풀기 보호되어 있는 글 입니다. 2022. 8. 3.
[백준] 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.
[백준] 1780 종이의 개수 예전에 풀어봤던 문제인데 해맸다. 0,1,-1의 개수를 세어 주고 n*n개 인지 비교하고 아니면 분할하는 방식으로 했는데 왜인지 계속 정답이 안나왔다. 재귀가 잘못된건지 뭐가 잘못된건지 못찾아서 다른 방식으로 했다. 하나라도 다른 것이 있으면 분할하고 아니면 카운트 해주었다. #include #include using namespace std; int nn,temp; int num[2200][2200]; int ans[3]; int check; void division(int x, int y, int n) { check = num[x][y]; for (int i = x; i < x + n; i++) for (int j = y; j < y + n; j++) { if (num[i][j] != num[x][y.. 2022. 6. 4.