[SWEA] 자바 1249. [S/W 문제해결 응용] 4일차 - 보급로
접근 방법 1. BFS로 접근하였습니다. 경로에 대해 저장할 이차원 배열 int[][] sum을 선언하여 이미 방문한 경로인 경우에는 현재 방문할 예정인 경로와 이미 방문한 경로의 값을 비교해 현재 방문할 예정인 경로가 더 작은 경우 큐에 다시 넣어주었습니다. 2. 특히, 이 문제의 경우 그냥 큐를 사용하였더니 시간초과가 났습니다. 따라서, 우선순위 큐를 통해 작은 값들을 먼저 돌게 하여 시간 초과 문제를 해결할 수 있었습니다. 구현 설명 1. class Point에는 x,y 좌표와 현재 경로에 대한 합을 저장하기 위한 value를 선언하였습니다. 2. int[][] dir = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}} 의 경우 기존에 상하좌우로 진행하였던 방향과는 다르게 좌우상하로 ..
2022. 10. 2.
[SWEA] 4008번 [모의 SW 역량테스트] 숫자 만들기 - 자바
문제 : 주어진 연산자 카드를 사용하여 수식을 계산했을 때 그 결과가 최대가 되는 수식과 최소가 되는 수식을 찾고, 두 값의 차이를 출력한다. 접근방법 연산자의 순서에 대해 모든 경우의 수를 따진다. => 순열 각 연산자의 개수 '+' 2 개, '-' 1 개, '*' 0 개, '/' 1 개의 경우 위와 같은 경우에는 {+, +, -, /} , {+, -, +, /}, {/, -, +, +} 등의 연산자 순서에 대해 경우의 수를 나타낼 수 있다. 위에서 경우의 수를 구한뒤 이에 대해 사칙연산을 수행하여 결과값을 도출해낸다. 구현 코드 아래의 permutation()함수의 output 배열에서는 입력으로 받았던 연산자 배열에 대한 인덱스의 순서가 저장된다. public class Solution_4008 {..
2022. 9. 14.