강의로 돌아가기
Aram

[Java] 간단 풀이 / 간단한 수학 공식 / 코드 없음

주어진 의상의 종류와 각 종류 별로 몇 개의 의상이 존재하는지만 계산하면 쉽게 해결 할 수 있습니다.

저의 경우 HashMap을 이용했습니다.
입력된 이차열 배열 clothes에서 의상의 종류만을 추출하여 HashMap 에 저장합니다.

아직 HashMap에 저장된 적이 없다면 종류와 1을 저장.
이미 저장되어 있다면 저장된 값을 1 증가 시킵니다.

이제 저장된 의상의 종류와 그 수로 가능한 조합의 수를 계산하면 됩니다.

1) 의상의 종류가 "1가지"인 경우. ( 의상 A가 a 개 )
a 개의 조합이 가능 합니다.

2) 의상의 종류가 "2가지"인 경우. ( 의상 A a개, 의상 B, b개 )
의상 A, B를 한가지 씩 입는 경우 a, b
의상 A B를 섞어 입는 경우 ab
a + b + ab 개의 조합이 가능합니다.

3) 의상의 종류가 "3가지"인 경우. ( 의상 A a개, 의상 B, b개, 의상 C c개)
의상 A, B, C를 한가지 씩 : a, b, c
의상 A B / A C / B C 2종류씩 : ab, ac, bc
의상 A B C를 섞어 입는 경우 : abc
a + b + c + ab + ac + bc + abc개의 조합이 가능합니다.

이 것을 공식으로 만들면
(1번 종류의 수 + 1 )(2번 종류의 수 + 1) ...(n번 종류의 수 + 1) - 1 을 계산하면 됩니다.

옷의 종류 1개 : ( a + 1 ) - 1 = a + 1 - 1
옷의 종류 2개 : (a + 1)(b + 1) - 1 = ab + a + b + 1 - 1
옷의 종류 3개 : (a + 1)(b + 1)(c + 1) - 1 = abc + ab + ac + bc + a + b + c + 1 - 1

코드와 더 자세한 설명은 여기에 있습니다!
https://aram-su.tistory.com/22

  • 김승현

    방정식을 찾는 과정이 감을 못잡았는데 이런 방식으로 찾아갈 수 있겠네요. 잘 배웠습니다!

    김승현―2023.11.06 10:30
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.