// 알고리즘 1. 순열 + 조합문제 2. 주어진 문자열을 각가 나눔 -> char 배열을 사용하여 각각 나눔 3. 1개 뽑는 경우 부터 다 뽑는 경우까지 조합을 만듦 4. 만들어 조합을 HashSet에 저장 -> ex) 011과 11이 같은 수 이므로 set을 사용하여 중복데이터를 없애줌. 5. 만들어진 set을 가지고 소수를 판별하면 됨 -> 2부터 시작하여 소수인지 판별 더보기 import java.util.*; class Solution { static int ans; static char[] num; static boolean[] v; static HashSet set; public int solution(String numbers) { num = numbers.toCharArray(); v =..
//알고리즘 1. 탐색 -> 최소시간을 출력하므로 bfs탐색 2. 활성화 시킬 바이러스 선택 -> 바이러스를 ArrayList로 받고 선택할 바이러스를 조합으로 구현 3. 선택된 바이러스를 큐에넣고 bfs탐색 시작 -> 최소시간이기 때문에 우선순위큐 사용 -> 활성 바이러스가 비활성 바이러스가 있는 칸으로 가면 비활성 바이러스가 활성으로 변한다라는 조건이 있어서 탐색 중 비활성화된 바이러스에 도달한다면 현재의 시간+1 값으로 세팅해 큐에 다시 넣음 -> bfs가 끝나면 바이러스가 안 퍼진 곳이 있는 지 확인 후 정답 출력 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import..
//알고리즘 1. 구현 2. 0부터 8까지 숫자배열 사용 3. 6과 9를 같이쓴다는 부분만 해결하면 됨. -> 6과 9의 개수를 6배열에만 카운팅하고 나누기 2를해서 올림 하면 됨. 4. 숫자배열중 가장 큰 수가 필요한 세트의 개수가 됨. 더보기 import java.util.Scanner; public class 방번호_1475 { static int N, number[]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); number = new int[9]; String str = Integer.toString(N); for (int i = 0; i < str.length(); i..