1. 문제 2. 코드문제를 어떻게 풀어야 할지 모를 때는 반드시 완전 탐색으로 푸는 방법을 생각한다.나도 문제를 보자마자 어떻게 풀어야 하지 한참 고민하다가... 해결 방법이 생각나지 않아서 일단 모든 경우의 수를 탐색했다.1번 교실부터 N번 교실까지 모두 들어가기1번 교실부터 N - 1번 교실까지 모두 들어가기...1번 교실만 들어가기1번 교실에서 출발하여 몇 번 교실을 들어가지 않았을 때 점수가 최대가 되는지 계산할 수 있다.3개의 교실을 반드시 방문해야한다고 했을 때, 아래 표를 보면 5개의 교실 중에서 5번, 3번, 1번을 방문하였을 때 계산 값이 가장 큰 것을 알 수 있다.5번 교실 방문 -> 1번 교실에서 5번 교실로 가기 위해 1번, 2번, 3번, 4번 교실을 모두 방문한 후 최종적으로 5..
1. 여러 사용자가 동시에 서버에 요청을 보낸다면, 서버는 모든 요청을 어떻게 순차적으로 처리할 수 있을까?웹 서비스 이용자가 많고, 특정 서비스에 대한 요청이 동시에 몰리게 되면, 서버에서 적절한 처리를 하지 않는 경우 일부 요청이 유실되는 문제가 발생할 수 있다. 예를 들어, 두 사용자가 동시에 물건을 구매했을 때 재고가 100개라면 정상적으로는 98개가 되어야 하지만, 첫 번째 사용자의 요청이 유실되면 DB에는 99개로 잘못 저장될 수 있다. 서버는 여러 사용자가 동시에 동일한 데이터에 접근하더라도 모든 요청을 순차적으로 처리할 수 있도록 관리해야 한다. 하지만 모든 요청을 완벽히 처리하려고 하면 서비스 속도가 느려질 수 있는 한계가 있다. MySQL에서는 배타적 락(Pessimistic Lock)..
1. 문제 2. 코드완전 탐색을 통해 2중 for문을 사용할 수 있겠지만, N이 100,000이므로 시간초과가 발생할 것이다.따라서 누적해서 계산할 수 있는 규칙을 찾아서 해결하였다.N = 4, arr = [2, 3, 2, 4](2, 3) + (2, 2) + (2, 4) + (3, 2) + (3, 4) + (2, 4)인덱스 2로 시작하는 총합 : 6 + 4 + 8 = 18인덱스 3으로 시작하는 총합 : 6 + 12 = 18인덱스 2로 시작하는 총합 : 8결론 : 18 + 18 + 8 = 44그러나 다음과 같이 규칙을 찾을 수 있다.(2, 3) + (2, 2) + (2, 4) -> 2 * (3 + 2+ 4) = 18(3, 2) + (3, 4) -> 3 * (2 + 4) = 18(2, 4) -> 8결론 : ..
1. 문제 2. 코드각 픽셀은 R, G, B 값을 가지고 있다.arr 배열의 크기는 [N][M * 3]인데, 그 이유는 한 픽셀에 3개의 색상(R, G, B)를 가지기 때문이다.각 픽셀에 사용된 R, G, B 값을 모두 더하여 평균을 낸다. 평균 >= T : 255 저장평균 2차원 배열 graph를 dfs를 통해 인접한 물체(255)를 찾는다.상하좌우로 인접한 물체(255)가 있다면 answer + 1answer를 출력한다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;public class Main { // N : 세로, M :가로 st..
1. 문제근데 사진에는 파란색이 왜 있는 거지? 글만 봤을 때는 파란색에 대한 언급이 없어서 문제를 이해하는 게 오래 걸렸다;;;(a), (b) 모두 outer side에 흰색이 없는데 어떻게 출발하는건지 이해를 못 했다. 사진을 무시하고 입력에 맞춰서 문제를 풀면 된다.흰색 : 0검은색 :1 2. BFS 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;public class Main { static int N, M; static int[][]..