본문 바로가기
반응형

3

백준 11438번 - LCA2 (C++) 문제 해결 방법 기존 LCA와 똑같이 풀이하되, 기존에는 공통 조상을 찾기 위하여 한칸한칸 전진하며 찾았지만, 데이터 범위가 늘어나 한칸한칸 전진하며 탐색하면 시간 초과가 나온다. 때문에 각 숫자별로 (2^0, 2^1, 2^2... 2^16)만큼 전진한 부모를 저장하여 2의 제곱수만큼 전진하며 탐색한다. 'Parents[i][j] = 2^j만큼 떨어진 i의 부모'이다. 2의 제곱수만큼 전진한 부모를 아는 방법은, "Parents[i][j + 1] = Parents[Parents[i][j]][j]"를 해주면 된다. 풀이를 하자면,나의 2^2+1(8칸)만큼 떨어진 부모는 나의 2^2(4칸)만큼 떨어진 부모의 2^2(4칸)만큼 떨어진 부모다. 즉 8칸=4칸+4칸, 2^3=2^2+2^2인것과 같은 원리다. (1.. 2021. 10. 2.
백준 5430번 - AC (C++) 문제 해결 방법 삭제할때 pop을 통하여 삭제할 예정이기 때문에 특수문자와 자릿수 문제 해결을 위하여 숫자들을 모두 deque> Num; for (int i = 0; i > Command_Str; int Ary_Num; cin >> Ary_Num; cin >> Str; deque Deq; //string에 있는 숫자들 deque로 옮김 for (int k = 1; k 2021. 10. 2.
백준 1430번 - 공격 (C++) 문제 해결 방법 BFS를 통하여 풀 수 있는 평범한 문제라고 생각한다. 적 위치부터 너비 기반 탐색을 시작하여며 탑을 발견하였다면 n번에 걸쳐서 발견한 탑인지에 따라 에너지/2^n를 누적해주어 탑끼리의 에너지 전달을 구현하였다. BFS방식은 2차원 벡터를 통하여 3,0(Vec[3][0])을 기준으로 2거리 이내의 탑을 찾는다고 한다면, x를 기준으로 최대, 최소인 Vec[1] 부터 Vec[5]까지만 순회하며 해당 좌표가 두 점 사이의 공식(sqrt(pow(XX - i, 2) + pow(YY - j, 2)))을 통하여 거리가 2거리 이내인지 판별하였다. 코드 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.. 2021. 8. 7.
반응형