Algorithm(코딩테스트)/코딩테스트 | 기초 개념 시리즈15 [Stack 응용] Monotonic Stack 두 줄 요약각 element를 오름 차순, 내림 차순으로 유지하는 알고리즘 기법 배열에서 다음보다(순서 중요) 큰 element나 작은 element를 찾는 문제를 O(n) 이라는 시간에 효율적으로 해결할 수 있다. 즉,1) 배열의 순서가 중요하고 (그 순서를 기점으로 계산해야 하기 때문에)2) 어떤 기점에서 크거나 작은 요소를 찾아야 하는 문제3) O(n^2)으로 해결할 수 없고, O(n)으로 해결해야 하는 경우 1) && 2) && 3) 의 해당하는 경우 Monotonic Stack을 사용하면 된다.온도 문제로 생각해보는 Monotonic Stack의 필요성각 일마다 온도를 순서대로 나타내어 temperatures 배열에 아래와 같이 저장했다고 하자.temperatures = [73,74,75,71,.. 2025. 3. 22. [JAVA] 쉽게 이해하는 재귀함수 결론1. 재귀함수는 큰 단위의 일을 작은 단위로 쪼개서 일을 시키는 것이다.2. 재귀함수는 순열/조합, DFS에서 자주 사용된다.3. 재귀함수는 종료 조건과 점화식/쪼갠 일의 task을 구하면 된다.재귀 함수의 이해재귀 함수는 자기 자신을 또 부르는 함수이다.만약 아래와 같은 코드가 있다면 어떤식으로 동작할까?public static void add(int n) { add(n-1);} 처음에 add(4) 함수를 호출한다고 가정해보자.그러면 add(4)는 함수 내부에서 add(3) 를 호출 할 것이다.add(3)는 또 add(2)을 호출하고,add(2)는 또 add(1)을 호출할 것이다. 이렇게 계속 진행되면 끝없이 add 함수를 호출하고 결국에는 stackoverflow 오류가 나게 된다. 그래서 우리는.. 2025. 3. 1. [JAVA] JAVA는 Call by Value 방식만 사용한다. 결론1. JAVA는 매개변수로 값을 넘길 때 항상 Call by value 방식으로 넘긴다.2. 배열/객체를 만들어 값을 넘긴다면 그 주소값을 넘겨주기 때문에 마치 참조를 하는 것처럼 할 수 있다. 일반 자료형의 Call by Valuemain 함수에서 swap(n,m) 으로 호출하여 n과 m을 변경하도록 함수를 호출하지만 swap 함수 내부에서 잠깐 변하고 변한 값이 main 함수에 영향을 미치지 않는다. n 값이 넘어가는 과정에서 Integer a 로 받는데, 이 것은새로운 변수를 선언하여 그 값인 2 값만을 전달하기 때문이다.그리고 swap 함수가 끝나면 swap 함수에 있는 메모리들도 소멸되기 때문에 main 함수에서는 아무런 변화가 없는 것이다. JAVA에서는 이렇게 매개변수로 값을 넘겨줄 때 .. 2025. 2. 28. [JAVA] 시뮬레이션 1 - 시간 계산 / 날짜 계산 / 진수 변환 / 구간 칠하기 / 사각형 칠하기 요약간단한 시뮬레이션에 대해 학습한다.- 시간 계산 (주어진 것 중 가장 작은 단위로 변환하여 풀이)- 날짜 계산 (주어진 것 중 가장 작은 단위로 변환하여 풀이)- 진수 변환 (진수 변환 방식 그대로 구현, a 진수 -> b 진수 변환 시 a 진수 -> 10 진수 -> b 진수 로 변환) - 구간 칠하기 (1차원 배열 flood fill)- 사각형 칠하기 (2차원 배열 flood fill) 시간 계산 / 날짜 계산가장 작은 (또는 공통된 단위)로 변환하여 계산한다.Ex) 시간을 분 단위로 환산하여 계산Ex) 날짜를 일 단위로 변환하여 계산 System.out.println() 으로 찍어가면서 코딩하는 것이 정확함. import java.util.*;import java.io.*;public class .. 2024. 12. 6. 이전 1 2 3 4 다음