본문 바로가기

전체 글

(177)
[코딩테스트] SWEA 1265 달란트2(Java) 제가 공부한 내용을 정리하는 블로그입니다.아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁SWEA 1265 달란트2입니다.포인트해당 문제는 수학을 사용하는 문제였습니다.합이 같은 두 수열이라도, 수들의 차이가 적을수록 곱이 더 커집니다.예를 들어:- 6을 2와 4로 나누면 곱은 8- 6을 3과 3으로 나누면 곱은 9 ✅즉, 곱해지는 수가 서로 비슷할수록 곱의 값은 더 커집니다.이 성질을 이용하면, 복잡한 탐색 없이 곱의 최댓값을 수학적으로 계산할 수 있습니다.소스코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java..
[코딩테스트] SWEA 1248 공통조상(Java) 제가 공부한 내용을 정리하는 블로그입니다.아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁SWEA 1248 공통조상입니다.먼저 효율적인 풀이인지는 사실 잘 모르겠습니다. 제가 푼 방법만 공유드리겠습니다.(후에 찾아보니 binary lifting 방법이 있더라구요. 추후에 공부 후 포스팅하도록 하겠습니다.)포인트트리의 특성을 활용한 문제입니다.트리의 각 노드는 depth가 존재하고 같은 depth로 만들고 그 부모가 같은지 확인하고 다르다면 부모 노드로 이동하는 로직으로 구성했습니다.소스코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReade..
[코딩테스트] SWEA 1210 Ladder1(Java) 제가 공부한 내용을 정리하는 블로그입니다.아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁SWEA 1210 Ladder1입니다.포인트사다리 타기 게임에 포인트는 아래로만 향하다가 갈래를 만났을 때 무조건 그쪽 방향으로 간다는 것입니다.100x100의 배열이기에 시작하는 위치(i==0이고 값이 1인) 위치를 기억하여 해당 위치에서 사다리를 탔을 때 목적지에 도착하도록 구현하는 문제입니다.소스코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Q1210 { static cla..
[코딩테스트] SWEA 1247 최적경로(Java) 제가 공부한 내용을 정리하는 블로그입니다.아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁SWEA 1247 최적경로입니다.포인트집과 회사의 위치는 고정되어 있고, 중간에 방문해야 하는 고객들의 위치를 어떤 순서로 방문할지 결정하는 것이 핵심 문제입니다.경로는 다음과 같은 형태로 구성됩니다:회사 → 고객 1 → 고객 2 → ... → 고객 n → 집이때, n명의 고객을 어떤 순서로 방문할지 결정하여 전체 경로의 맨해튼 거리 합이 최소가 되도록 해야 합니다.고객들의 방문 순서를 정하는 모든 경우를 탐색하려면 순열을 고려해야 하며, 이는 시간복잡도 O(n!)의 완전탐색 문제로 볼 수 있습니다.최악의 경우 n = 10일 때, 총 경우의 수는 10! =..
[코딩테스트] SWEA 1249 보급로(Java) 제가 공부한 내용을 정리하는 블로그입니다.아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁SWEA 1249 보급로입니다.포인트문제가 여러 조건이 많은 것 같지만 배열의 숫자는 이동비용이라고 가정하면 결국 출발지로부터 도착지까지의 최소 비용을 구하는 문제입니다.따라서 BFS로 문제를 풀면 가능합니다. BFS는 한 위치에 도달하기에 최소 경로가 보장되기 때문에 step이라는 배열을 통해 비용을 저장합니다.소스코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.Lin..
[코딩테스트] SWEA 1218 괄호 짝짓기(Java) 제가 공부한 내용을 정리하는 블로그입니다.아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁SWEA 1218 괄호 짝짓기입니다.포인트닫힌 괄호 ), ], }, >는 항상 그에 대응하는 열린 괄호 (, [, {, 뒤에 나와야 합니다.따라서 문자열을 순회하면서 닫힌 괄호를 만날 때마다 최근에 열린 괄호와 짝이 맞는지 확인해주는 방식으로 유효성을 판단할 수 있습니다. 이를 위해 가장 적절한 자료구조는 LIFO(Last-In-First-Out) 구조인 스택(Stack) 입니다.열린 괄호는 스택에 저장하고,닫힌 괄호를 만났을 때 스택의 top과 매칭되는 열린 괄호인지 확인합니다.괄호가 올바르게 짝지어지지 않았거나, 스택이 비어있는 경우 → 올바르지 않은 ..
[코딩테스트] SWEA 1226 미로1(Java) 제가 공부한 내용을 정리하는 블로그입니다.아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁SWEA 1226 미로1입니다.포인트먼저 시작점과 목표 지점을 설정합니다.시작점으로부터 상하좌우 방향으로 이동 가능한지를 순회하면서 탐색을 진행합니다.이동 중에는 벽은 갈 수 없도록 범위 체크를 합니다.또한 이미 방문한 구간은 다시 탐색하지 않도록 처리하여 중복을 방지합니다.위 조건을 기반으로, 너비 우선 탐색(BFS)를 사용해 전체 경우를 탐색합니다.소스코드package SWExpert.Implementation;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStr..
[코딩테스트] SWEA 2819 격자판의 숫자 이어 붙이기(Java) 제가 공부한 내용을 정리하는 블로그입니다.아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁SWEA 2819 격자판의 숫자 이어붙이기입니다.포인트제가 생각한 포인트는 다음과 같습니다.4X4의 격자시작점이 16개완전탐색 가능성총 7개의 길이.16 * 4^6 = 2^16의 작업Java기준 4초 내 가능 => 완전탐색 가능DFS(재귀)를 통한 탐색각 칸을 시작점으로 재귀적으로 탐색하여 경로를 구성.각 숫자는 중복을 허용하지 않는 점. => HashSet 사용 소스코드package SWExpert.Implementation;import java.io.BufferedReader;import java.io.IOException;import java.io.I..