반응형
문제링크 🚩 https://www.acmicpc.net/problem/11505 11505번: 구간 곱 구하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)과 M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000) 가 주어진다. M은 수의 변경이 일어나는 횟수이고, K는 구간의 곱을 구하는 횟수이다. 그리고 둘째 줄부터 N+1번째 줄 www.acmicpc.net 📕 문제 접근 📕 - 세그먼트 트리의 입문 문제로 구간 합 구하기과 매우 유사한 문제 입니다- 다만 곱이나보니 mulTree 함수를 만들 때 return 값에 유의하여 0이 아닌 1이 반환되도록 하였습니다. -> 0을 곱해버리면 결과가 0이 나오기 때문. 💻 Code 💻 import java.io.BufferedReader..
문제링크 🚩 https://www.acmicpc.net/problem/1275 1275번: 커피숍2 첫째 줄에 수의 개수 N과 턴의 개수 Q가 주어진다.(1 ≤ N, Q ≤ 100,000) 둘째 줄에는 처음 배열에 들어가 있는 정수 N개가 주어진다. 세 번째 줄에서 Q+2번째 줄까지는 x y a b의 형식으로 x~y까지의 합 www.acmicpc.net 💻 Code 💻 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenize..
💡 여러 개의 데이터가 연속적으로 존재할 때 특정한 범위의 데이터의 연산을 진행하기 위해 사용하는 자료구조 문제인식 N개의 정수들이 있을 때, a번째 정수부터 b번째 정수까지의 합을 구하는 것은 어려운 일이 아니다. 예를 들면, 아래 배열에서 5번째에서 11번째 까지 더하는 방법은 그냥 배열을 돌면서 더하면 된다. 그 시간 복잡도는 대략 O(N) 이다. 하지만 이와 같은 a, b의 쌍이 M개 주어졌을 때는 O(M*N) 이 된다. 너무 오래 걸리니까 더 좋은 방법을 찾아보자. 구간 합을 구할 때마다 N을 전부 도는게 너무 오래 걸린다면, 특정 구간의 합을 미리 저장하고 이 값들의 합을 구해보자. 이때, 이진 트리를 활용할 수 있다. 트리 생성 구간 합을 저장해 보자. 이 전체 의 합은 66이다. 이 구간의..
Spring - DI Spring은 DI(Dependency Injection) 기능을 제공하는 프레임워크 중 하나이다. DI는 의존성 주입이라는 의미로 객체지향 프로그래밍에서 객체 간의 관계를 형성하는데 있어서 중요한 개념이다. DI를 통해 객체 간의 결합도를 낮출 수 있고, 코드의 유지보수성과 테스트 용이성을 향상 시킬 수 있다. DI는 일종의 제어의 역전(Inversion of Control. IoC) 개념으로, 객체를 직접 생성하고 관리하는 것이 아니라, 외부에서 생성한 객체를 주입받아 사용하는 것을 의미한다. 이를 통해 객체간의 의존성을 줄이고 유연성 있는 코드를 작성할 수 있다. Spring에서 DI를 사용하는 이유 코드의 유지 보수성 향상 DI를 사용하면 의존성이 높은 객체를 직접 생..