목록전체 글 (135)
100세까지 코딩

문제 설명 풀기 전 생각 Stack과 Queue를 사용하여 DFS, BFS를 구현 정점 번호가 작은 것을 먼저 방문하려면 인접리스트를 정렬 DFS는 Stack을 사용하니 내림차순 정렬 BFS는 Queue를 사용하니 오름차순 정렬 코드 package algorithm; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; import java.util.Stack; public class DFSBFS { public static void main(String[] arg..
문제 설명 ※ 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개(|||) 또는..