브루트포스
[BOJ] 2344 - 거울
문제 출처 [BOJ] 2344 - 거울 풀이 주어진 상자에 구멍이 뚫려있고 구명으로 빛이 들어오는데 들어옵니다. 빛이 들어와서 상자 안의 거울에 부딪쳐 다른 구멍으로 나가게 되는데 나가는 구멍의 번호를 구하는 문제였습니다. 상자의 구조를 배열에 저장할 때 1, 1의 좌표에서부터 저장해주고 상자 주변배열에 1부터 2N+2M까지의 번호를 저장해주었습니다. 구조를 만들어준 뒤 각 번호에서 시작해서 bfs로 상자 안을 탐색해 나가는 구멍을 찾아주었습니다. 구멍을 이동하는 빛의 움직임은 대칭적입니다. 예를 들어 1번 구멍 -> 8번 구멍 이런 빛의 경로가 있다면 8번 구멍 -> 1번 구멍 으로 빛이 나아간다는 것입니다. 저는 이를 이용해서 dfs로 빛이 어떤 구멍으로 나가는지 찾아줄 때 모든 구멍을 돌지 않고 반..
[BOJ] 22351 - 수학은 체육과목 입니다 3
문제 출처 [BOJ] 22351 - 수학은 체육과목 입니다 3 풀이 주어진 문자열을 잘라서 순차적으로 증가하는지 확인해주고 해당되는 경우를 출력해주면 되는 문제였습니다. 순차적으로 증가하는 경우를 확인해 준 방법은 브루트포스였습니다. 증가하는 경우는 이렇게 나뉠 수 있습니다. 한자리 -> 한자리 ex) 12 => 1 -> 2 한자리 -> 두자리 ex) 910 => 9 -> 10 두자리 -> 두자리 ex) 1011 => 10 -> 11 두자리 -> 세자리 ex) 99100 => 99 -> 100 세자리 -> 세자리 ex) 299300 => 299 -> 300 시작하는 수가 몇 자리인지 알 수 없기 때문에 한자리, 두자리, 세자리 이렇게 늘려가보면서 모든 경우를 확인해주어야 합니다. 그리고 각 자리수는 한자..
[BOJ] 16637 - 괄호 추가하기
문제 출처 [BOJ] 16637 - 괄호 추가하기 풀이 문제는 최대 길이가 19인 수식이 주어지고 수식에 괄호를 쳐서 연산의 결과가 가장 크도록 만들어야 합니다. 수식은 기존에 연산자 우선순위를 따르지 않고 앞에서부터 차례대로 연산이 수행되는데 이 때 괄호는 가장 먼저 수행됩니다. 완전탐색으로 모든 괄호를 쳐줄 수 있는 경우를 봐주어 문제를 풀었습니다. 재귀함수를 사용하여 괄호를 포함한 수식의 경우를 만들어주고 수식을 계산하여 가장 큰 수를 찾았습니다. 3 + 8 * 7 - 9 * 2라는 예제에 (3 + 8) * 7 - (9 * 2)와 같이 괄호를 붙여 수식을 만드는 과정과 결과로 vector에 남는 값들을 연산해 수를 찾는 과정입니다. 코드 small-j/Algorithm Contribute to sm..