완탐으로 풀 수 있어서 dfs를 이용해 풀었다 팀을 나눈 후 그래프로 표현하고 dfs를 이용해 내가 우리팀에 갈 수 있는지 체크를 하면 된다 여기서 만약 애초에 그래프가 2개 이상의 연결요소로 구성되어있다면 애초에 2개의 팀으로 나눌 수 없어서 -1 을 출력하고 종료하자! 그럼 그래프를 그린 후를 생각해보자 dfs를 이용해서 origin -> next 로 갈 수 있는지 계속 확인해보며 된다 그 후 만약 같은 팀인데 연결 되어있지않다면 false 아니면 true를 리턴해주고 만약 모든 조건을 만족한다면 팀의 합의 최소를 구해보자 소스코드 (C++) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33..
한번 풀어보려고했는데 한시간이나 걸렸따... 문제를 쉽게 해주기 위해 괄호는 하나의 연산자만 포함한다는걸 모르고 풀다가 나중에 보니 답이 다르게나온다~! 그리고 처음에 한자리수만 줘서 더 쉬운것같다 나처럼 복잡하게 푼 사람은 많이 없을듯..! 그럼 문제를 풀어보자! 우선 비트를 이용해서 짝수 인덱스인 숫자만 봐준다 괄호가 짝이 맞아야 하기 때문에 짝수개 있을 때만 넘겨준다! 110101이면 1~2 ,4~6이 괄호다! 괄호를 체크하고 solve 함수로 넘겨준다 그럼 solve는 괄호가 있는곳은 먼저 cal함수로 계산해주고 마지막에 괄호가 없을 때를 계산해 답으로 넘겨준다 cal에서는 순서대로 앞에서 계산하기 때문에 덱으로 그냥 계산했다! 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ..