목록코딩테스트/자바 (46)
100세까지 코딩
문제 설명 ※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. https://swexpertacademy.com/main/code/problem/problemDetail.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀기 전 생각 등차수열의 조건을 생각한다. ( 2 * b = a + c ) a나 c값에 더하거나 빼는 조건 = ( 2 * b - (a + c) ) b값에 더하거나 빼는 조건 = ( b - ((a+c) / 2) ) 두 상황 중 절댓값이 더 작은 것 출력 소수점 1자리까지 출력 코드 package algorithm; import java.util.Scanner; import ..
문제 설명 ※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. https://swexpertacademy.com/main/solvingProblem/solvingProblem.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀기 전 생각 슬라이딩 윈도우와 비슷한 느낌 배열을 미리 1001로 초기화하고 입력받은 빌딩 수만큼 빌딩 높이 저장 5개를 한 묶음으로 생각하며 i = 2부터 시작하여 (i = 빌딩 수 - 2)만큼 반복 i-2, i-1, i+1, i+2 중에 가장 높은 건물 높이를 구하여 현재 빌딩이 더 크면 (현재 빌딩 - 가장 높은 건물 높이) 더해나가면서 총세대수를 구하기 코드..
문제 설명 ※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LrsUaDxcDFAXc SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀기 전 생각 배열에 값을 다 넣은 후 최댓값(max)과 그에 해당하는 인덱스(maxIndex) 찾기 그 사이 원소의 갯수는 cnt = maxIndex - start 시작점(start)부터 최대값-1까지 값들을 sum에서 빼주기 그 후 최댓값일 때 판매로 벌어들인 수익 더해주기 (sum += cnt * max) 그다음..

동적 계획법이란? 복잡한 문제를 여러 개의 간단한 문제로 분리하여 부분의 문제들을 해결하여 최종적인 복잡한 문제의 답을 구하는 것 동적 계획법을 푸는 팁 작은 문제로 나눌 수 있어야 하며, 점화식을 세운다. DP[](다이나믹 프로그래밍) 테이블에 값을 저장한다. 테이블 값을 재사용하여 시간을 단축한다. (메모이제이션 기법) 바텀 - 업 (반복문) OR 탑 - 다운(재귀 함수의 형태) 방식으로 푼다. 문제 설명 풀기 전 생각 점화식을 세울 때 D[N-2], D[N-1]을 먼저 생각 (초기부터 생각하는 바텀-업 방식) D[1] 일 때는 세로 1개 (|) 밖에 불가능하므로 D[1] = 1 D[2]일 때는 세로 2개 (||), 또는 가로 2개(=) 이므로 D[2] = 2 D[3]일 때는 세로 3개(|||) 또는..

조합 자체로도 자주 출제되며 동적 계획법을 이해하는데 중요 점화식을 도출하는 것이 매우 중요 기본 지식으로 i C k 이면, k는 (0 ~ i)까지 가능하며 k=0 또는 k=i 이면 1이다. 점화식 도출 특정 문제를 가정 모든 부분 문제가 해결되었다고 가정하고 지금 문제 생각 예시 5개 중에 3개를 고르는 5C3 (1,2,3,4),5가 있으면 괄호안은 이미 선택이 완료된 데이터 5를 선택한다면 이미 선택된 데이터 4개중 2개만 골라야 한다. 4C2 5를 선택하지 않는다면 이미 선택된 데이터 4개중 3개를 골라야 한다. 4C3 즉, 5C3 = 4C2 + 4C3 D[i][j] = D [i-1][j-1] + D [i-1][j] 문제 설명 풀기 전 생각 위에서 얻은 점화식을 활용하여 재귀함수 사용 재귀함수를 멈..

그래프란? 객체 사이의 연결 관계를 표현할 수 있는 자료구조 정점(vertex)과 간선(edge)들의 집합 종류는 무방향 그래프, 방향 그래프 문제 설명 강의 코드 import java.io.BufferedReader; import java.util.ArrayList; import java.io.InputStreamReader; public class Baek1707 { static ArrayList[] A; static int[] check; // 같은 집합인지 다른집합인지 구분 static boolean[] visited; // 방문 여부 static boolean IsEven; // 이분 그래프 인지 아닌지 T / F public static void main(String[] args) throws..