inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

1. 합이 같은 부분집합

합이 같은 부분집합 (total/2)==sum 과 (total-sum)==sum

451

우럭아왜우럭

작성한 질문수 18

0

안녕하세요 강사님.

합이 같은 부분집합 문제에서, 강사님께선 종료조건을
(total - sum) == sum 이걸로 주셨는데,

앞쪽에서 (total / 2) == sum 이것두 된다고하셔서 바꿔서 내봤는데 오답으로 뜨네요,,,

import java.io.*;
import java.util.StringTokenizer;

public class Main {

  static int[] array;
  static int n;
  static int total = 0;
  static boolean isFind = false;
  static String answer = "NO";

  public void DFS(int i, int sum) {
    if (isFind) {
      return;
    }
    if (sum > (total / 2)) {
      return;
    }
    if (i == n) {
      if ((total / 2) == sum) {
        isFind = true;
        answer = "YES";
      }
    } else {
      DFS(i + 1, sum + array[i]);
      DFS(i + 1, sum);
    }
  }

  public static void main(String[] args) throws IOException {
    Main main = new Main();
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    n = Integer.parseInt(br.readLine());
    array = new int[n];
    String s = br.readLine();
    StringTokenizer st = new StringTokenizer(s, " ");
    for (int i = 0; i < n; i++) {
      array[i] = Integer.parseInt(st.nextToken());
      total += array[i];
    }
    main.DFS(0, 0);
    System.out.println(answer);

java 코테 준비 같이 해요!

답변 1

7

김태원

안녕하세요^^

total/2==sum 이 total값이 홀수임에도 불구하고  '/' 연산자는 몫을 구하기 때문에 참이 될 수 있습니다. 

만약 total이 125이면 125/2==62가 참이 됩니다. 이런 경우를 방지하기 위하여 

if(total%2==0 && (total / 2) == sum) 이렇게 조건을 걸어주면 좋겠습니다.

0

우럭아왜우럭

감사합니다

봉우리 문제 질문입니다

0

70

2

씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?

0

57

0

이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?

0

65

0

가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법

0

62

1

좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ

0

77

2

6-7 강의에서

0

43

1

6-6. 장난꾸러기 질문 있습니다.

0

39

1

강의 수강후 코딩테스트

0

99

1

answer 변수 사용 여부

0

38

1

2중 for문

1

79

2

2-11. 임시반장정하기 (Runtime Error)

0

57

1

혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?

0

62

1

이런 풀이는 어떨까요

0

38

1

자바 스트림 방식의 효율성 질문 드립니다.

0

50

1

알고리즘 자료 구조들..

0

54

1

StringBuilder vs BufferdWriter

0

42

1

원더랜드(프림)

0

41

1

이런 코드는 어떤가요?

0

53

1

bfs 풀이

0

50

1

병합정렬

0

50

1

26강 임시반장 정하기에서 질문이 있습니다

0

36

1

이번달말에 완강 후 공부 방향

0

63

1

제가 이런 코테가 처음인데 공부방법을..ㅠ

1

100

1

20강 소수 에라토스테네스의 체 런타임 에러가 뜹니다

0

42

1