//알고리즘 1. 모든 경우를 다 시도해봐야하는 완탐. 2. 처음에 순열로 생각하여 풀었지만 11! 이기 때문에 시간초과. 3. 중복순열로 생각하여 풀었더니 최대 4^11 이기때문에 충분히 가능하다고 판단. 4. 기존 입력값으로 주어진 operator 배열과 중복순열로 만들어진 oper배열과 비교하여 같을 때만 계산. 5. max값이 0으로 초기화해서 시작했지만 음수도 나올 수 있기 때문에 나올수 있는 최소값으로 초기화 -> 중요! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import j..
알고리즘 1. 시작좌표부터 편의점좌표, 도착좌표까지 갈 수 있는 거리가 1000미터 이기 때문에 거리가 1000이하인 곳의 인접리스트를 만들어야 함. 2. 인접리스트와 방문배열을 이용하여 시작좌표를 기준으로 dfs를 돌려 도착좌표에 도달하면 정답 출력. ※ 주어진 좌표를 인접리스트로 만드는게 핵심임. (2차원 배열로 표시했다가는 메모리 초과가 날 듯..) import java.util.ArrayList; import java.util.Scanner; public class 맥주마시면서걸어가기_9205 { static int T, n, ans; public static void main(String[] args) { Scanner sc = new Scanner(System.in); T = sc.nextIn..
알고리즘 1. 알파벳 명물을 두 번 이상 보지 않도록 탐색하는 문제이기 때문에 갈 수 있는 모든곳을 탐색해야 함. 2. 방문배열을 알파벳수만큼 26개 boolean배열로 만듬. 3. 방문한곳의 알파벳 명물을 방문배열에 표시하여 갈 수 있는 모든 곳을 탐색. 4. depth가 최대 26이기 때문에 dfs로도 충분히 풀 수 있음. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Solution { static int T, R, C, Ans, max; static char[][] map; static boole..