본문 바로가기

전체 글

(88)
백준 2559 <수열> 투 포인터의 개념을 이용하여 접근이 가능한 문제!! 이 문제에서 조금 응용을 해 k일의 온도 합을 구하는 것이 T번 있다고 가정하면 인덱스 트리를 이용하게 되는 문제! 문제 풀이 처음 K수만큼을 sum 값에 더한다. start를 0 finish를 k로 두고 하나씩 증가하며 finish가 n이 될 때까지 진행한다. sum값에 finish를 더하고 start를 빼주고 이렇게 최대를 구한다 전체 코드 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.Str..
백준 2304 <창고 다각형> 위의 그림을 보게 되면 어떻게 구해야 할지 감이 오는 문제. 앞에서부터 시작해서 점점 커지는 기둥만 넣고 반대로 뒤에서부터 시작해서 점점 커지는 기둥을 넣고 계산하면 끝! 문제 풀이 기둥의 시작위치가 랜덤 하기 때문에 class를 하나 만들어서 시작 위치 순으로 정렬 가작 작은 위치부터 시작해서 증가하면서 커지는 기둥만 ArrayList에 넣기 그림에서는 2 반대로 가장 높은 위치에서 시작해서 감소하면서 커지는 기둥만 ArrayList에 넣기 그림에서는 15 Arraylist에서 이전값의 h에다가 사이의 값을 곱해서 더하기 마지막으로 가장높은 위치 한번 더 더해주기 주의 사항! 이렇게 해주게 되면 이렇게 색칠한 부분이 들어가지 않는다. 처음부터 시작한 것이 6,8 이 끝이고 뒹서부터 시작한 것이 8,8 ..
백준 2116 <주사위쌓기> 시뮬레이션 완전 탐색 문제이다. 문제가 어렵지는 않지만 시뮬레이션을 처음 접한다면 많은 생각이 필요한 문제. 문제를 이해하기 위해서는 기본적으로 주사위밑면이 어떤 부분일 경우 윗면이 어떤 부분이 온다는 것을 인지해야 하는 문제이다. 이렇게 세트로 온다는 것을 잘 생각해야 한다. 이 문제의 시간 복잡도는 맨처음 6가지를 고르는 경우와 다음 6개 중 한 개가 정해져 있기 때문에 최대 10000개 이하이기 때문에 6*6*10000 이므로 36만이고 옆면 중 최댓값을 찾는 경우 각각 6이라고 가정하면 6*6*10000을 한 번 더 하기 때문에 대략 72만이 될것이다. 문제 풀이 처음 시작은 6개 경우 다해봐야 함 아랫부분과 위를 제외한 최댓값을 구한다 다음 함수의 매개변수에 현재 위에 올 숫자와 이때까지의 합과..