순열 4

[JAVA] 백준 N과 M(2), DFS 중복X

N과M(1)은 중복 O N과M(2)는 중복 X 둘다 DFS를 활용한 코드이다. 오히려 중복없이 출력하는 코드인 (2)가 더 짧다. 단, 매개변수를 하나 더 필요로한다. 이 값(at)은 현재 index값보다 더 큰 index에 대하여 for문을 돌리기위해 사용한다. import java.util.Scanner; class Main { public static int[] arr; public static int N, M; public static void main(String[] args) { Scanner in = new Scanner(System.in); N = in.nextInt(); M = in.nextInt(); arr = new int[M]; dfs(1, 0); } public static voi..

(2020카카오) 수식최대화 Java

문제를 잘 읽자 백만번 제창하기 : 덧셈,뺄셈,곱셈,나눗셈 인줄 알고 경우의 수가 4!인줄알고 permutation(순열)을 고민했다. 그랬다면 Level3 문제였겠지. 덧셈,뺄셈,곱셈 세가지의 경우에만 해당하므로 3!=6가지 뿐이므로 순열부분을 수작업으로 처리했다. 그리고 만약 나눗셈까지 있었다면 고려해야될 예외사항이 많이 나와서 아마 문제에서 나눗셈은 뺀것같다. ex) 나누는값이 0인경우와 같은 상황. stack 복사 Stack stack = new Stack(); Stack t = (Stack) stack.clone(); t = stack; 이런식으로는 복사가 안된다. 따라서 반복문으로는 pop을 해야되므로 옮기기 힘드니깐 굳이 그러지말고 clone() 메소드를 이용하는것을 추천한다. 풀이 중위연산..

(2021카카오) 메뉴 리뉴얼 Java

이 문제의 가장 큰 포인트는 조합이다. 1. 조합 각 문자열에 대하여 나올수 있는 조합을 구하는데, 그 조합을 nCr이라고 할때, r값은 course[i]로 주어진 것이고, n값은 각 코스요리의 길이 이므로 orders[i].length로 주어진다. 2. 알파벳순 정렬 고려하는 새로운 코스요리 세트에 대하여, AB와 BA는 같은 것이므로 오름차순 정렬을 시행한다. 이는 map에 집어넣을때부터 비교연산을 하는 모든 경우에서 필요하므로 미리 정렬 시켜야한다. 실패코드 더보기 테스트케이스 3만 성공한다. import java.util.*; class Solution { private static Map map = new HashMap(); static void print(String arr, boolean[]..

[JAVA] 완전탐색 "소수 찾기"

완전탐색을 이용하여 소수를 찾는 알고리즘이다. 이전에 String을 parseInt하는 부분도 포함되어있는 문제다. 그리고, Permutation순열을 이용하여 수학적으로 재귀탐색을 하는 방식이며, Set을 이용하여 중복 제거를 하는 방식으로 알고리즘을 풀어야 했다. 필자는 Permutation부분을 스스로 구현하기 어려워 다른 이의 코드를 참고하였다. codevang.tistory.com/299?category=827588 import java.util.ArrayList; import java.util.List; import java.util.TreeSet; class Solution { private static TreeSet set = new TreeSet(); private int count; p..