목록Algorithm/SW Expert Academy (5)
Dolphins의 HelloWorld
문제링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWVl47b6DGMDFAXm&categoryId=AWVl47b6DGMDFAXm&categoryType=CODE&&& 주어진 문제를 풀기위해 string 형식으로 위의 괄호 표현을 받은 후 반복문을 통해 첫번째 괄호부터 검사를 해나갔다. 먼저 '(' 를 탐색했을 떄는 다음 배열을 탐색하여 이것이 레이저인지, 쇠막대기가 추가되는 것인지 검사를 하였다. 쇠막대기가 추가된 것이라면 변수에 쇠막대기의 갯수를 추가해주고 레이저라면 현재 있는 쇠막대기의 수 만큼 결과값에 더해주도록 하였다. 위의 그림을 예로들자면 두번째 레이저가 나왔을 떄는 쇠막대기가 3개있는 상태기..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWS2h6AKBCoDFAVT&categoryId=AWS2h6AKBCoDFAVT&categoryType=CODE 우뚝 선 산이 될 수 있는 case를 보면 예를들어 h1 h4 > h5 라고 할 때 h3 앞에 올 수 있는 경우의 수는 ( h1 ) , ( h1 h2 ) => 2가지 이고 h3 뒤에 올 수 있는 경우의 수는 ( h4 ) , ( h4 h5 ) = > 2가지 이다. 고로 우뚝 선 산이 될 수 있는 구간이 될 경우의 수는 2 * 2 = 4 가지 이다. 이런식으로 우뚝 선 산 전후로 오는 경우의 수가 몇가지인지 체크하고 곱한 것을 계속 더해나간..
문제링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWS2dSgKA8MDFAVT&categoryId=AWS2dSgKA8MDFAVT&categoryType=CODE ->사이트에서 직접 문제를 찾아 들어가야함. 풀이 문제를 이해하고 나면 쉽게 풀 수 있는 문제이다. 필요한 사람과 박수를 치고있는 사람을 저장하는 변수를 할당하고 반복문을 통해 자릿수가 0이 아닐때마다 처리해주면 된다. #include #include using namespace std; int main() { int T; scanf("%d", &T); for (int i = 1; i > s; int number = 0; //박수치는 사람 int..
문제링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWT-hF8KdBADFAVT&categoryId=AWT-hF8KdBADFAVT&categoryType=CODE 이 문제에서 가장 중요한건 다름이 아니라 문제의 조건인 100000개 테스트케이스를 합쳐서 5초이내에 계산이 돼야된다는 점이다. 고로 주어지는 숫자 n까지의 홀수 약수의 합을 미리 구해 저장해놓은다음 문제에서 L과R을 제시하면 저장해놓은 memo 배열에서 memo[R] - memo[L-1]을 해서 바로 숫자가 나올 수 있도록 해야한다. 이렇게 하면 미리 memo배열에 숫자를 넣는 과정에는 약간의 시간이 걸리지만 그 후에는 아주 근소한 시간밖에 걸..
문제링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LrsUaDxcDFAXc&categoryId=AV5LrsUaDxcDFAXc&categoryType=CODE D2문제임에도 불구하고 조금 까다로웠던 문제이다. 처음에 문제를 풀때는 priority_queue에 pair형식으로 인덱스와 매매가를 함께 넣어주어 매매가가 높은 index까지 계속 차액을 더해주고 해당 index해 도달하면 그 뒷 배열에 있는 것중 매매가가 가장 높은 곳까지 차액을 더해주는 식으로 문제를 풀었다. 결과적으로 테스트 케이스중 5개만 맞았는데 절차는 맞으나 복잡도나 공간의 문제가 생겼던걸로 보인다. 간단하게 푸는 방식은 마지막 in..