본문 바로가기

2024/082

[백준 14719] 빗물 (C++) https://www.acmicpc.net/problem/14719 문제각 열의 기둥 높이가 주어지고 그 사이에 채워지는 칸의 수를 출력하는 문제 접근 방법이게 맞는 방법인진 모르겠지만 W가 최대 500이어서 왔다갔다 두번하는 식으로 했다.처음에는 왼쪽에서 오른쪽으로 가면서 지금까지 가장 높았던 기둥(curMax)의 높이와 인덱스를 저장한다.그러면서 현재 보고 있는 기둥이 curMax 기둥보다 낮을 경우 -> curMax - 현재 기둥 높이 를 tmp에 더한다.이때 tmp는 임시로 고인 빗물의 양이다.그리고, 현재 보고 있는 기둥이 curMax 기둥보다 같거나 높을 경우 -> 지금까지의 고인 물이 고이는 것이 확정되므로tmp 값을 result 에 더해주고 tmp를 0으로 초기화한다. 문제는 tmp에 임시.. 2024. 8. 1.
[백준 2504] 괄호의 값 (C++) https://www.acmicpc.net/problem/2504문제주어진 올바른 괄호 문자열에 대해서만 규칙대로 값을 계산해서 출력하는 것규칙은 (()[[]]) 이런 문자열이라면 2*(2+3*3) = 22 가 된다. 접근방법다른 블로그들을 참고해서 풀었는데, 풀이 방법은 '겉 괄호는 본인이 끝날때까지 안쪽 괄호 모두에게 영향을 미친다'라고 생각하면 될 것 같다.그리고 계산식을 모두 풀어서 최대한 긴 다항식으로 만든다. 가 포인트인듯뭔말이냐면 위에서 2*(2+3*3) -> 2*2 + 2*3*3 으로 만든다는 것임이걸 만드는 방향으로 코드를 짜서 풀었다. 따라서 tmp 변수를 선언해두고 answer 변수에 값을 더해가면서 풀어야 함(, [ 가 나오면 우선 tmp에 2를 곱한다. 이제 앞으로 나오는 계산에는.. 2024. 8. 1.