1) 생각 4 x 4 격자 판이 주어졌을 때, 7개를 탐색했을 경우 나올 수 있는 숫자의 개수를 구하시오(중복 비허용)처음 생각우선 4 x 4이고 시간도 Java의 경우 4초를 주기때문에 충분히 완전탐색으로 해결할 수 있다고 생각하였다.따라서 DFS를 이용하여 탐색을 진행하였다. 다음 생각DFS를 진행하면서 7개의 탐색을 진행하면 방문 배열을 통하여 이미 온곳이면 return하고 방문하지 않았던 곳이면 방문표시를 한 뒤, 개수 변수를 result++ 해준 뒤, return 처리를 하였다. 알고리즘을 다 완성하고 나서 보니 HashSet 자료구조를 쓰는것이 더 좋을 것 같아 수정하였다. 다음 생각HashSet의 제너릭 타입을 String으로 해주었는데 아무래도 객체들을 다루다보니 속도가 느리고 메모리를 많..
1) 생각 이전 문제인 [SW Expert] 4579. 세상의 모든 팰린드롬 2 와 거의 비슷한 문제이다 답도 1줄만 추가하였다.팰린드롬을 만들 수 있나를 물어보는 문제이다. 이번엔 치트키로 '?'를 사용하고 있다. 첫 번째 생각이전 문제랑 거의 똑같지만 한 가지 차이가 있다면 '*'는 모든 문자를 넣을 있으므로 '*'가 있을 때는 강제로 맞춰줄 수 있었다.이번 문제에서 사용되는 치트키 '?'는 딱 한 글자만 넣을 수 있으므로 다른 점이다. 2) 방안 1) '?'는 한 글자만 넣을 수 있으므로 flag가 false를 가르키고 있다면 반복문을 바로 빠져나와준다.2) 이전 문제의 치트키 '*'는 문자를 넣을 수 있었기에 "ab*csdfba"와 같이 '?'를 넣었을 경우에는 틀린 문자에서 문장을 넣어주어서 '..
1) 생각 앞 뒤로 똑같은 문자를 팰린드롬이라고 한다. 이때 치트키 문자인 "*"는 어떤게 들어가도 상관이 없다.문자가 주어질 때, 그 문자가 팰린드롬이 될 수 있는지 판단해라. 첫 번째 생각앞 뒤가 똑같아야 하므로 문자열의 앞에서부터 그리고 뒤에서부터를 비교한다.만약 해당 Index 짝이 다르다면 그 짝중에 "*"가 있는지 판단해본다. 2) 방안 1) 반복문을 통해 변수 j를 늘리면서 앞쪽에서 진행하는 Index를 얻고, 해당 문자열 길이 - j - 1을 통해서 뒤에서 진행하는 Index를 얻어 비교한다. 2) 다르다면 우선 flag를 false로 바꾼다. 3) 해당 Index의 짝이 다르면 둘 중 *가 있는지 파악하여 있다면 flag를 다시 true로 바꿔준다. 123456789101112131415..
- Total
- Today
- Yesterday