목록알고리즘 문제풀기/SW Expert Academy (19)
문제 링크 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWbrg9uabZsDFAWQ&categoryId=AWbrg9uabZsDFAWQ&categoryType=CODE 2048 게임을 몇 번만에 풀수 있는지 혹은 풀 수 있는지 없는지를 물어보는 문제가 아닌 단순히 주어지는 방향으로 한 번 시행했을 때의 결과를 출력하는 문제이다. 기본적인 방법은 UP의 경우 위에서부터 아래로 내려가면서, DOWN의 경우 아래에서 위로 올라가면서 확인을 한다. 우선, 방향이 문자열로 들어온다. 생각한 방법은 2가지이다. 1. 문자열 그대로 받은 후 strcmp를 통한 비교 2. up / left / right / down..
문제 링크 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWT-hF8KdBADFAVT&categoryId=AWT-hF8KdBADFAVT&categoryType=CODE 시간을 무려 5초나 준다. 그래서 처음에는 무작정 부딪혔지만 시간초과가 발생했다. 이유는 테스트 케이스가 100,000개라는 것을 못봤기 때문.. 지금까지의 문제와는 조금 다른 느낌이었다. 이 문제에서 중요한 것은 10^6개의 숫자에 대해 미리 홀수 약수합을 구해놔야 한다는 것이다. 즉, 미리 데이터를 구해놓고 test_case 루틴에 들어가야 한다는 것이다. 그 부분만 기억하면 쉽게 풀 수 있는 문제 ! 188ms가 나왔는데 89ms에..
문제 링크 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWbHcWd6AFcDFAV0&categoryId=AWbHcWd6AFcDFAV0&categoryType=CODE 그래프에서 삼각형 즉, 3개의 노드가 서로간의 간선이 존재하여 싸이클을 이루는 경우를 찾는 문제다. 감사하게도 N의 최대값이 50이므로 O(N^3)이 된다고 해도 시간초과가 발생하지 않는다. ※ M의 최대값은 N(N-1)/2이므로 시간초과가 발생할 가능성이 매우 높다 ! 가장 먼저 [N][N] 크기의 배열을 먼저 생성했다. 그리고 들어오는 간선들을 a와 b 사이에 간선이 있다고 할 때 [a][b], [b][a] 배열의 값을 1로 만들어주는 ..