문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15QRX6APsCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 모든 좌표를 다 방문하고 각 좌표마다 백트레킹을 이용하여 문제를 푼다. 7개의 좌표값을 백트레킹을 이용하여 탐색하고 리스트에 넣는다.(4*4이기 때문에 시간초과는 웬만해서는 안난다) 리스트에 넣을 때마다 리스트에 값이 있는지 확인하고 넣게되면 시간초과가 발생한다. 따라서, 먼저 리스트에 넣고 정렬한다음 중복된 개수를 센 다음 리스트의 크기에서 중복된 개수를 빼면 된다. +) HashSet..
문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&problemLevel=4&contestProbId=AV15QRX6APsCFAYD&categoryId=AV15QRX6APsCFAYD&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=ALL&select-1=4&pageSize=10&pageIndex=1# SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 복구 시간이 가장 짧은 경로를 찾으라고 하였으므로 BFS를 이용한다. 이차원 배열을 이용..
문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 문제에서 100개의 상자 높이를 받고 가장 높은곳의 상자를 가장 낮은 곳에 옮겨준다고 한다. 그리고 두 높이의 차이를 구하면 답이 된다. 따라서 정렬을 이용하여 높이순으로 정렬하고 가장 높은곳의 높이를 하나빼주고 가장 낮은곳의 높이를 하나 더해주면 된다. 코드 import java.util.*; import java.io.*; public class Main { public static ..
문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15Khn6AN0CFAYD 풀이 어려운 문제였다. 처음에는 수를 정해서 바꿀려고 시도했다. 시도하다보니 경우의 수가 많이 나오게 되고 이는 틀린 풀이임을 직감하게 되었다. 따라서 완전탐색을 이용하여 숫자를 모두 교환하여 모든 수를 찾고 그중에서 가장 큰 수를 구하는 방식으로 하게 되었다. 근데, 이렇게 하면 시간초과가 발생하기때문에 최적화가 필요하다. 샘플 input인 456789, 10 으로 예를들어보자. 이 경우의 정답은 987645 다. 이는 즉, 여러번 교환해도 결과값은 최댓값이 아닐 수 있다는 것을 의미한다. 또한, 교환 횟수를 맞추기 위해 맨 끝 두..
문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV134DPqAA8CFAYh SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 앞뒤로 두칸이내에 빌딩이 없어야 조망권을 획득 할 수 있다. 이는 즉, 앞뒤로 두칸이내의 빌딩과 현재 빌딩의 차이의 최소값이 현재 빌딩의 조망권이 된다. 코드 import java.util.*; import java.io.*; public class Solution { public static void main (String[] args) throws java.lang.Exception ..