본문 바로가기

Algorithm3

[Java] 백준 2143: 두 배열의 합 https://www.acmicpc.net/problem/2143 문제 분석A, B 두 배열에서 각각 부배열을 하나씩 선택해서 두 부배열의 합이 T가 되는 경우의 수를 구하기예제: A = [1, 3, 1, 2], B = [1, 3, 2], T = 5 → 답: 7 먼저 A, B 배열에 대한 누적합 배열 SumA, SumB 를 만들었다A = [1, 3, 1, 2]SumA[0] = A[0] = 1SumA[1] = SumA[0] + A[1] = 1 + 3 = 4SumA[2] = SumA[1] + A[2] = 4(1 + 3) + 1 = 5SumA[3] = SumA[2] + A[3] = 5(1 + 3 + 1) + 2 = 7결과: SumA = [1, 4, 5, 7]이렇게 해두면 부배열 A[i ~ j]의 합 = S.. 2025. 9. 25.
[Java] 백준 14503 로봇 청소기 문제문제 링크https://www.acmicpc.net/problem/14503 잘못 이해했던 부분문제 설명엔 다음과 같은 흐름이 나온다 1. 현재 칸이 청소되지 않았다면 청소2. 현재 칸 주변 4칸 중에 청소되지 않은 칸이 없는 경우:1. 후진할 수 있으면 한 칸 후진하고 다시 1번으로2. 후진할 수 없으면 작동 종료3. 현재 칸 주변 4칸 중에 청소되지 않은 칸이 있는 경우:1. 반시계 방향으로 회전2. 방금 회전한 방향 기준으로 앞쪽 칸이 청소되지 않았다면 전진3. 그렇지 않다면 다시 1번으로 돌아감 여기서 "다시 1번으로"가 처음 단계(현재 칸 청소 여부)를 의미한다고 생각했다그래서 "청소하지 않은 칸이 하나라도 있다면 → 그때부터 회전 시작" 이라는 흐름으로 코드를 짰다 처음 시도했던 코드.. 2025. 7. 20.
[Java] 프로그래머스 - 가장 큰 수 (정렬) 문제 설명0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.제한 사항numbers의 길이는 1 이상 100,000 이하입니다.numbers의 원소는 0 이상 1,000 이하입니다.정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.입출력 예numbersreturn[6, 10, 2]"6210"[3,.. 2025. 2. 12.