https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AX4EJPs68IkDFARe단순한 구현문제이다.char\[] 배열로 입력 받아 각 자리를 변경해보고 가장 큰 수일 때와
문제를 읽고 이해할 수 있으면 구현은 어렵지 않다.
달팽이 껍데기처럼 소용돌이 모양으로 숫자가 이어지는 모습이다.2차원 배열에 대한 이해도를 묻는 문제이다.
주어지는 조건에 맞게 구현하면 되는 문제다.2차원 배열을 다룰 수 있으면 어렵지 않게 풀 수 있다.
이 문제를 보면 BFS를 이용하거나 2차원 배열의 인덱스를 이용해 마름모에 포함되는지 확인하는 방법이 떠오른다.BFS가 익숙해지고 보면 단순히 BFS를 이용하는 게 구현하는 것이 쉽지만,실행시간에서는 인덱스를 이용해 조건을 만들어 주는 것이 훨씬 효율적이다.
효율적으로 계산하는 방법은 쉽지 않겠지만, 문제에서 주어진 실행시간이 20초이기 때문에 단순하게 MAX, MIN을 찾아 구현하면 된다.
단순한 2차원 배열 구현 문제다.
모든 조합을 구해보고, 조건에 부합하면 갱신하면 된다.
스택을 이용해 닫는 괄호 값이 들어오면 pop()을 했을 때 나오는 괄호와 짝지어지면 된다.
주어진 조건대로 실행되도록 LinkedList를 활용해 구현하는 문제다.
과자 두 봉지를 조건에 맞게 고르는 문제이다.때문에 2중 for문을 사용해 완전 탐색을 하면 쉽게 답을 구할 수 있다.
간판의 가로, 세로 길이 그리고 기록될 문구가 주어지고, 사용할 수 있는 최대 글자 크기를 구하는 문제다.사이즈를 점점 늘려가며 조건이 맞으면 갱신하고, 맞지 않으면 종료하면 된다.
이진 트리에 관한 문제이지만, 입력의 규칙성을 찾아낸다면 이진트리에 대한 이해가 없이도 쉽게 풀 수 있다.연산이 가능한 경우는 모두 리프 노드(최하위 노드)가 숫자로 구성되고, 나머지 노드는 연산자로 구성되어 있다.입력에서 리프노드가 가장 마지막에 들어오기 때문에 해당
BFS나 DFS를 이용해 2차원 배열을 조건에 맞게 탐색할 수 있으면 된다.
스택을 이용해 주어진 계산식을 연산하는 것을 요구하는 문제다.
Queue를 활용해 가장 앞쪽의 값을 뽑아 새로운 List에 담아주면 된다.
앞서 풀었던 계산기2 문제와 다르지 않다.괄호 연산만 추가적으로 생각해주면 된다.
조합을 이용해 가능한 경우를 모두 연산해보고 조건에 맞으면 갱신해주면 된다.
각 이동마다 그 상태에서 최대 충전 성능을 구해 더해주면 구할 수 있다.2차원 배열에 대한 이해와 구현을 할 수 있는 지 묻는 문제다.
문제에서 친절하게 모든 경로를 살펴도 좋다고 말해주고 있다.또, 최대 10명의 고객 좌표가 주어지기 때문에 순열을 사용하면 된다는 걸 알 수 있다.인접행렬을 이용해 고객 간 이동거리를 배열에 담아두고 활용한다.그리고 순열의 매개변수로 최소 거리를 계산하면서 지금까지 더
순열을 이용해 하나씩 저울에 추를 올리며, 우측이 더 무거워지는 경우에는 중단한다.이런 방식으로 주어진 모든 추를 다 올릴 수 있으면 조건에 맞는 경우를 찾아낼 수 있다.
BFS를 통해 방문하지 않았던 인접 정점을 순회하며 마지막 값을 반환하면 된다.
단순한 구현 문제다.
크루스칼 알고리즘을 사용해 구할 수 있다.크루스칼 알고리즘이란 가중치가 가장 작은 간선부터 하나씩 연결해나가는 방식이다.이 문제에서는 정점의 수가 매우 많기 때문에 인접행렬을 사용할 수 없고, Union-Find 알고리즘을 이용해 풀 수 있다.
인접행렬로 입력을 받고, 직접 연결되지 않은 정점에 대한 인접행렬 값을 간선의 수로 갱신한다.각 행의 합 중 최소값을 찾아 출력하면 문제에서 원하는 답을 구할 수 있다.