Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CJW] 9월 2주차 #120

Merged
merged 4 commits into from
Sep 24, 2022
Merged

[CJW] 9월 2주차 #120

merged 4 commits into from
Sep 24, 2022

Conversation

Cha-Ji
Copy link
Member

@Cha-Ji Cha-Ji commented Sep 10, 2022

What is this pr

문제 리스트

  • 1208 부분수열의합 2
  • 1644 소수의 연속합
  • 2143 두 배열의합
  • 16566 카드게임

고민

두 배열의 합

문제

  • 두 배열이 있고, 원하는 합을 구한다.

요약

  • 배열이 두개 있고 합의 경우의수를 탐색하는 문제라고 볼 수 있다.
  • 동적으로 누적합을 구한다면 O(N^2)이 된다. 따라서 전처리를 통해 양쪽의 누적합을 미리 구해둬야 한다.
  • 또한 이진탐색으로 접근해 시간복잡도를 줄여야 한다.

풀이

  • 위 요약과는 달리 왼쪽 배열의 누적합을 구하고, 오른쪽 배열에선 원하는 값을 찾는 방식으로 해결했다.
  • a배열은 합을 인덱스로 하고, 개수를 밸류로 하는 배열을 저장한다.
  • b배열을 순회할 때 a배열[타겟 값 - 누적합] 을 구한다면, 답을 이끌어낼 수 있다.

Keep: 누적합을 처음 시도했으며 다음엔 적용할 수 있어야 한다, 배열을 둘로 나눠푸는 접근법, 이진탐색 고려


소수의 연속합

문제

  • 연속되는 소수끼리 합해 원하는 합을 구한다.

요약

  • 에라토스테네스의 체로 소수를 걸러낸다.
  • 누적합의 배열을 구하면서 상한을 걸어 시간초과를 피한다.

Keep: 누적합을 적용했으며 정석적이지 않은 문제도 도전해야한다.


부분수열의 합 2

문제

  • 원하는 값을 구할 수 있는 조합의 개수를 구한다.

요약

  • O(2^N), N <= 40 이다. 배열을 둘로 나눠푸는 접근법을 알았기 때문에 O(2^M) M <= 20으로 풀었다.
  • 비트마스킹을 활용해 조합을 boolean 배열로 나타냈으며 코드의 질을 높였다.

Keep: 누적합을 응용했으며 실전에서 맞아야 한다. 비트마스킹을 활용했다.


카드게임

문제

  • a 배열을 순회하며 요소보다 큰값을 b배열에서 소모한다.

요약

  • a배열에서 요소보다 큰 값을 찾기 위해 upperBound를 이분탐색해야한다.
  • b배열에서 값을 소모하기 위해 union find를 활용한다.

Keep: 이진탐색의 lower bound, upper bound 개념이 있다는걸 처음 알았다. union find를 처음 활용했지만 어렵지 않았다. 바로 실전에 적용해도 될 것 같다


엣지 케이스

@Cha-Ji Cha-Ji added 어려운 유형 or 골 상위 플 하위 이분탐색 Two Pointer 투 포인터 알고리즘 labels Sep 10, 2022
@Cha-Ji Cha-Ji self-assigned this Sep 10, 2022
@Cha-Ji Cha-Ji merged commit 2ece74b into 16-SulGore:CJW Sep 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Two Pointer 투 포인터 알고리즘 어려운 유형 or 골 상위 플 하위 이분탐색
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant