2021/12/25 토요일

Gong Intaek·2021년 12월 25일
0

일상

목록 보기
197/1031
post-thumbnail

오늘 한 일

  • leetcode
    • Combination Sum IV. (medium)
  • 걷기 운동(산책)

문제 풀이

Combination Sum IV. (medium)

주어진 숫자들로 target 값을 만들수 있는 조합의 갯수를 돌려주는 문제. 숫자들은 중복되지않는 숫자들로 주어지며 조합에서는 중복되게 사용 가능하다.

풀이를 위해 처음으로 생각한 방식은 이전에 문제들에서 사용한 방법과 유사한 재귀함수를 구현 하고 해당 재귀함수로 각각의 조합들을 구하고 그때마다 카운팅하여 총 조합수를 구하는 방식이었으나, 주어진 예문을 풀이하기에는 소모되는 시간이 너무 많아 실패하였다.

다음으로 생각한 방식은 target 값 크기의 배열을 구성, 각각의 인덱스가 하나하나의 값과 매칭하고 값으로 해당 인덱스(값은 인덱스 + 1)를 만들수있는 조합의 갯수를 입력하는 방식으로 목표로 하는 target 값을 만들수 있는 조합의 갯수를 구하는 것이다.

위 문제에서 제시된 예제1의 입력 값을 사용해서 나타내보면 다음과 같다.

nums=[1,2,3], target=4
arr=[0,0,0,0]
// index + 1 이 각각의 숫자를 나타냄.
// 초기에 주어진 숫자들을 조합의 갯수로 입력
arr=[1,1,1,0]
// index 0 일때 (숫자 1 일때) 나머지 숫자를 더하여 만드는 조합을 배열에 반영
arr=[1,2,2,1] ([1,1] => 1+1 , [1,2] => 1+1 , [1,3] => 0+1)
// index 1 일때 (숫자 2 일때) 나머지 숫자를 더하여 만드는 조합을 배열에 반영
// 목표 값을 넘어가면 계산하지 않음.
arr=[1,2,4,3] ([2,1] => 2+2 , [2,2] => 2+1)
// index 2 일때 (숫자 3 일때) 나머지 숫자를 더하여 만드는 조합을 배열에 반영
arr=[1,2,4,7] ([3,1] => 4+3)

즉 이전의 조합식의 갯수를 다음 조합에 누적하면서 최종적인 목표의 조합식의 갯수를 찾는 방법이다.

이러한 방식을 통해 이전 풀이 방법에서 문제가 되었던 수행시간에 대한 부분을 해결하고 주어진 예문을 모두 풀이할 수 있었다.


남은 것

클라이언트

  • 현재 상태에서 로그인 창 부분을 재활용하여 로그인 된상태 창을 구현 로그인 결과를 표기하고 로그아웃 버튼구현.
  • 실패시에는 실패 문구를 표현하고 로그인창으로 돌아가는 버튼구현.
  • 로그인 성공, 실패에 따른 결과 부분의 표현을 적용할 것.

서버

  • 데이터베이스와의 연결고리 구성

데이터베이스

  • 유저 네임, 비번만을 컬럼으로 가지는 유저 테이블 구성

공부 할 것(꾸준히)


오늘은...

회복중

profile
개발자가 되기위해 공부중

0개의 댓글