📑 1. 문제설명계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = 4, n = 3 인 경우입니다. 가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다. 격자의 크기 m, n과 물이 잠긴 지역의 좌표를 담은 2차원 배열 puddles이 매개변수로 주어집니다. 오른쪽과 아래쪽으로만 움직여 집에서 학교까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지를 return 하도록 solution 함수를 작성해주세요. 제한사항격자의 크기 m, n은 1 이상 ..
📑 1. 문제설명💡 2. 접근방식동전 거스름돈 문제와 유사하다.개미 군단 문제는 주어진 값에 대해 각 개미 종류별로 몫을 카운트하고 나머지로 다른 개미 종류를 채운다.나누어 떨어지는 몫을 먼저 구하고 나머지를 처리하는 방식이다. 해결 방법 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있다.1. 먼저 hp를 장군개미(5 공격력)로 최대한 나누어 몫 구하기2. 남은 체력을 병정개미(3 공격력)로 최대한 나누어 몫 구하기3. 나머지 체력을 일개미(1 공격력)로 처리하기모든 개미의 몫을 더하면 최소 개미의 수가 된다. ⭐ 3. 정답코드class Solution { public int solution(int hp) { int answer = 0; ..
📑 1. 문제설명💡 2. 접근방식매우 쉬운 문제이다. 예시에서 n이 20 일때 곱이 20인 순서쌍은 (1, 20), (2, 10), (4, 5), (5, 4), (10, 2), (20, 1) 이므로 6을 return한다. 즉, n의 약수의 개수를 구하는 문제이다. 1부터 n까지 for문을 돌려 n%i가 0으로 떨어지면 카운트해서 answer에 누적한다. ⭐ 3. 정답코드class Solution { public int solution(int n) { int answer = 0; for (int i = 1; i
📑 1. 문제설명💡 2. 접근방식1. emergency 배열을 복사하여 sorted 배열을 생성하고 오름차순 정렬한다. 이 때 복사를 하는 이유는 기존 배열의 순서를 유지하면서 순위를 매겨야 하기 때문이다.2. 해시맵을 사용하여 응급도와 순위를 매핑한다.HashMap rankMap을 선언하여 응급도 값 → 순위로 저장한다. sorted는 오름차순이므로, 큰 값일수록 높은 순위가 된다. `rankMap.put(sorted[i], sorted.length - i);` → 응급도가 클수록 높은 순위(큰 값)로 매핑이 된다. 3. result 배열을 생성하여 응급도 순위를 저장한다. 이 때 기존 emergency 배열을 순회하면서 rankMap에서 rankMap.get(emergency[i]) 으로 해당 응..
📑 1. 피자 나눠 먹기(1) 첫 번째 시도 틀림 (정확도 80%)테스트 케이스 5,6에서 틀림 이유는 7의 배수 일 때 불필요하게 한 판이 추가됨n을 7로 나눈 나머지가 0일 때 (7의 배수 일 때는) n/7만 리턴하도록 코드 추가해 주었다. ⭐정답코드class Solution { public int solution(int n) { if (n ⭐최적 코드 n / 7.0을 하면 소수점이 나올 때 올림해야 하지만, 정수 연산을 활용해 계산을 단순화할 수 있다. (n + 6) / 7은 n을 7로 나눴을 때 남은 조각이 있으면 자동으로 올림 효과를 주기 때문이다.이렇게 하면 Math.ceil(n / 7.0) 같은 실수 연산 없이, 정수 연산으로 간단하게 해결할 수 있다.import jav..
📑 1. 문제설명💡 2. 접근방식 ✔️ 문제 요약 - 지뢰찾기 게임board는 n x n 크기의 2D 배열이다.지뢰가 있는 위치는 1, 없는 위치는 0이다.지뢰(1)가 있는 곳을 기준으로 주변 8방향 + 자기 자신까지 위험지대(1)로 표시해야 한다.최종적으로 안전한 지역(0)의 개수를 반환하는 문제이다.✔️ 풀이 방식배열 bd[][] 생성 → 기존 board[][]의 정보를 가져온다.board[][] 에서 지뢰(1)를 찾으면 주변 8방향 + 자기 자신을 1로 변경한다.이 때 중요한 것은 배열 범위를 벗어나지 않도록 Math.min(), Math.max()를 사용해서 인덱스 위치를 조정한다.모든 위험지대를 표시한 후 남은 0의 개수를 세어 반환한다.그림으로 표현해 보았다. 지뢰가 있는 위치 즉, boa..