변경이력

돌아가기
16 426개 문자 추가 148개 문자 삭제

2016/10/19 13:27

compert

Java - 이진수를 이용해 모든 경우의 합을 계산하고 일치할 때 출력. - break 문을 넣으면 처음 일치하는 경우만 출력. ```{.java} import java.util.Scanner; import java.util.function.BiConsumer; import java.util.function.BiFunction; import java.util.regex.Pattern; public class TargetDolls { public static void process(String input1, String input2) { String[] inputList1 = input1.split(" "); Pattern.compile(" ").split(input1); int size = Integer.parseInt(inputList1[0]); int targetSum = Integer.parseInt(inputList1[1]); int[] sortedList = Pattern.compile(" ").splitAsStream(input2) .mapToInt(Integer::parseInt).sorted().toArray(); int binaryMax = (int)Math.pow(2d, (double)size); for (int i = 1; i < binaryMax; i++) { if (computeSum.apply(i, sortedList) == targetSum) { showResult.accept(i, sortedList); //break; } } //break; } } } private static BiFunction<Integer, int[], Integer> computeSum = (caseNum, values) -> { int pos = 0, sum = 0; while (caseNum > 0) { sum += caseNum % 2 == 1 ? values[pos]:0; pos++; pos++; caseNum = caseNum/2; } } return sum; }; private static BiConsumer<Integer, int[]> showResult = (caseNum, values) -> { int pos = 0; while (caseNum > 0) { System.out.print(caseNum % 2 == 1 ? values[pos]+" ":""); pos++; pos++; caseNum = caseNum/2; } } System.out.println(); }; public static void main(String[] args) { try (Scanner sc = new Scanner(System.in)) { String input1 = sc.nextLine(); String input2 = sc.nextLine(); TargetDolls.process(input1, input2); } } } } ``` # 결과 - 입력: 5 10 - 입력: 1 2 3 4 5 - 1 2 3 4 - 2 3 5 - 1 4 5
Java - 이진수를 이용해 모든 경우의 합을 계산하고 일치할 때 출력. - break 문을 넣으면 처음 일치하는 경우만 출력. ```{.java} import java.util.Scanner; import java.util.function.BiConsumer; import java.util.function.BiFunction; import java.util.regex.Pattern; public class TargetDolls { public static void process(String input1, String input2) { String[] inputList1 = input1.split(" "); Pattern.compile(" ").split(input1); int size = Integer.parseInt(inputList1[0]); int targetSum = Integer.parseInt(inputList1[1]); int[] sortedList = Pattern.compile(" ").splitAsStream(input2) .mapToInt(Integer::parseInt).sorted().toArray(); int binaryMax = (int)Math.pow(2d, (double)size); for (int i = 1; i < binaryMax; i++) { if (computeSum.apply(i, sortedList) == targetSum) { showResult.accept(i, sortedList); //break; } } //break; } } } private static BiFunction<Integer, int[], Integer> computeSum = (caseNum, values) -> { int pos = 0, sum = 0; while (caseNum > 0) { sum += caseNum % 2 == 1 ? values[pos]:0; pos++; pos++; caseNum = caseNum/2; } } return sum; }; private static BiConsumer<Integer, int[]> showResult = (caseNum, values) -> { int pos = 0; while (caseNum > 0) { System.out.print(caseNum % 2 == 1 ? values[pos]+" ":""); pos++; pos++; caseNum = caseNum/2; } } System.out.println(); }; public static void main(String[] args) { try (Scanner sc = new Scanner(System.in)) { String input1 = sc.nextLine(); String input2 = sc.nextLine(); TargetDolls.process(input1, input2); } } } } ``` # 결과 - 입력: 5 10 - 입력: 1 2 3 4 5 - 1 2 3 4 - 2 3 5 - 1 4 5
15 20개 문자 추가 133개 문자 삭제

2016/10/19 08:52

compert

14 8개 문자 추가

2016/10/19 08:47

compert

13 9개 문자 추가 8개 문자 삭제

2016/10/19 08:47

compert

12 87개 문자 추가

2016/10/19 08:46

compert

11 1개 문자 추가 1개 문자 삭제

2016/10/19 08:42

compert

10 39개 문자 추가

2016/10/19 08:42

compert

9 508개 문자 추가 549개 문자 삭제

2016/10/19 08:40

compert

8 5개 문자 삭제

2016/10/19 06:28

compert

7 69개 문자 삭제

2016/10/19 06:00

compert

6 6개 문자 추가

2016/10/19 05:58

compert

5 130개 문자 추가 32개 문자 삭제

2016/10/19 05:57

compert

4 2개 문자 추가 2개 문자 삭제

2016/10/19 05:53

compert

3 2개 문자 추가

2016/10/19 05:52

compert

2 71개 문자 추가

2016/10/19 05:52

compert

1 Original

2016/10/19 05:50

compert

코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.