![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw8ejp%2FbtsAw65FN53%2F7ag0MTTTmiSTdGXa8K1G21%2Fimg.png)
1. 문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 2. 어떻게 풀까 처음에 문제를 잘못 읽어서 횟수가 10번인 줄 알고 어떻게 찾아냐 하나 난감했는데, 1번만 연산하면 되는 것이었다. 잘 알려진 공식 `2b = a + c`를 이용하기로 했다. 2b -a -c를 2로 나줘주면 정답이다. 이때 절대값으로 바꿔줘야 한다.하지만 이렇게만 구현하면 오답처리된다. 왜냐하면 수 세개의 부호가 다르면 결과가 다르기 때문이다. 0일 때는 상관 없지만 세 수중 하나라도 부호가 다르면 나누기 2를 하지 않아야 한다. 왜인지는 잘 모르겠다.. 계산해보니 나누기 2를 안하니깐 딱 맞아 떨어진다. 3. 코드 class Solu..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckCKJb%2FbtsAw5SYqzS%2FkAhXmp1wHSu8zLV3jtzZfk%2Fimg.png)
1. 💎 문제 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 2. 🤔어떻게 풀까 저번에 풀어봤던 문제랑 비슷해서 그때 처럼 `TreeMap`을 써서 풀기로 했다. 조건은 가장 작은 수를 단 번에 꺼낼 수 있어야 한다는 것과 중복값을 포함할 수 있어야 한다는 것이다. 가장 작은 수를 앞에서 꺼내기 위해 정렬을 한 후 넣으면 시간 초과가 난다. TreeSet 또는 TreeMap 삽입과 동시에 정렬을 해서 넣어준다. 이진 탐색으로 구현되어 있다. -정렬 방법 변경- 생성할 때 Compartor..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSOMgk%2FbtsArh7ywr8%2FZmQ7R40kMcNI8cla3W0G41%2Fimg.png)
1. 💎 문제 2. 🤔 어떻게 풀까 `찾을 때까지 재귀`를 돌리면 될 것 같다. 어떤 조건으로 재귀를 돌릴까? 찾아야 되는 숫자를 기준으로 x, y값 범위가 초과되는지, 포함되는지 여부에 따라 `4사분면`으로 나눠서 진행한다. 만약 현재 탐색하는 x의 범위가 찾아야 하는 x값보다 크다면 2, 3 사분면으로 인식하여 더해줄 것 더해주고 y값도 마찬가지로 비교해서 적절한 사분면을 찾자, 범위는 현재 범위의 나누기 2만큼 다시 탐색을 진행! 그리고 원하는 값을 찾으면 재귀를 멈춘다. 문제를 잘못 봐서 원하는 숫자를 기준으로 로직을 생각했다가, 주어지는 것이 행과 열 정보인 것을 보고 기준을 행과 열로 다시 진행했다! 로직은 같다. 3. 🖥️ 코드 여기서의 제4사분면은 지그재그 순서대로 1,2,3,4 분면을 나..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGW0aj%2FbtsAryHVwXe%2F1qV53K5bsN3O6mAOp1Abik%2Fimg.png)
1. 💎 문제 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 2. 🖥️ 코드 import java.util.*; import java.io.*; class Main { static boolean isBaecu [][]; public static void main(String args[]) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWiPsL%2Fbtsz833lQJp%2FkI8Tyx9JX8Fng706TUpdZ0%2Fimg.png)
1. 💎 문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 2. 🤔어떻게 풀까? 이거는 다 더해봐야 풀 수 있겠다고 생각하다가 어떻게 하면 로직을 줄일 수 있을까 고민했다. 결국 구간합을 이용하기로 했다! 구간합을 이용하여 O(n)으로 문제를 풀 수 있다. 만약 구간합을 미리 구하지 않는다면 모든 순서마다 요소들을 구해 더해줘야 하므로 O(M*N)으로 오랜 시간이 걸린다. 3. 💡 풀이 로직 1. 숫자 입력 받기 & 구간 합 구하기 현재 요소의 구간 합은 `sum[i-1][j] + sum[i][j-1] - sum[i-1][j-1] + nums[i][j]`로 구한다. String [] data = br.rea..