일일 회고

이동욱

2021/06/05

Categories: 회고 Tags: 회고

Facts (사실, 객관)

algorithm

Feelings (느낌, 주관)

Findings (배운 점)

주어진 정수형 배열에서 2개의 숫자를 선택하여 더한 값이 특정 목표값을 만들 때, 그 선택한 2개의 정수가 있는 배열의 인덱스를 반환하는 프로그램을 작성하라. 입력 값으로 주어지는 배열에는 정확히 하나의 정답이 존재하며, 같은 요소의 값을 중복해서 사용할 수 없다.

제한 사항 (Constraints)

1. 정수형 배열
2. 두 수의 합이 정수형을 초과할 수 있는가?
  - 문제에 언급이 없다.
3. 두 수의 합이 배열 내에 무조건 존재하는가?
  - 무조건 정확히 하나의 해결책이 존재한다.
4. 중복된 요소의 값을 2번 이상 사용하여, 결과값을 만들어서는 안된다.

아이디어 (Ideas)

아이디어 (Brute-force)
1. 배열의 모든 요소의 조합을 찾는다.
  - 루프는 i = 0 ~ n, j = i + 1 ~ n으로 2중 루프를 구성한다.
  - 1번째 루프 (n번), 2번째 루푸는 (n - 1)을 기준으로 n * (n - 1)로 계산하자.
2. 해당 조합으로 목표값과 비교하여 같다면 해당 로프를 종료하고 각 가진 인덱스를 반환한다.

시간 복잡도: O(n^2)
공간 복잡도: O(1)
아이디어 (Hash Tables)
1. 해시 테이블을 구성한다.
  - 키 값으로는 배열의 요소, 값으로는 요소의 인덱스로 구성
2. 각 요소를 순회하면서,
  - 목표값 - 현재 요소 = 다른 요소
  - 해시 테이블에서 다른 요소의 값을 찾는다.
  - 만약 다른 요소가 해시 테이블에 있다면, 현재 요소의 인덱스와 해시 테이블의 값(인덱스)를 반환한다.
  - 다른 요소가 없다면, 현재 요소를 해시 테이블의 키 값으로 넣고 인덱스를 해시 테이블의 값 항목으로 추가한다.


시간 복잡도: O(N) 한번의 순회로 원하는 값을 찾을 수 있다.
공간 복잡도: O(N) 해시테이블의 생성하여 최대로 모든 요소 (N)을 담아야 한다.

코드(code)

테스트(Test Cases)

Bad (개선할 점)

Goal and DueDate (목표 및 마감기한)

Affimation (자기 선언)

회고 작성법

  1. Facts(사실, 객관) 회사에서 실제로 내가 했던 일이나 겪었던 일의 사실을 적는다.
  2. Feelings(느낌, 주관) 내가 했던 일을 하면서 느꼈던 감정이나 느낌을 적는다.
  3. Findings(배운 점) 내가 했던 일을 통해서 새롭게 배운 점이나 알게 된 점을 적는다.
  4. Affirmation (자기 선언) 내가 했던 일을 통해 배운 점과 아쉬운 점을 어떻게 유지 하고 개선할지를 적는다.
>> Home