1.Dependency Inversion Principle(DIP)는 OOP의 SOLID 원칙 중 하나로

저수준 모듈이 합쳐져 고수준 모듈이 되는 것이 아니라
고수준 모듈에서 저수준 모듈이 영향을 받아야 한다는 것으로

각각의 기능들을 구성해 고수준 모듈을 만들지 말고
기능을 하는 고소준 모듈(class 등)을 선언한 다음
거기에서 작동하는 메서드를 저수준 모듈에서 사용하는 방식이다.

이를 통해 저수준 모듈의 변화는 신경쓸 필요 없이
고수준 모듈의 변경 하나로 저수준 모듈들의 변화를 이끌어낼 수 있고
저수준 모듈의 확장, 제거, 수정 등을 자유롭게 할 수 있다.

이를 마트로 예를 들자면
DIP 위반 방식은 물건이 들어올 경우 
a물건 가격등록, a물건 수량입력 등의 메서드를 사용하고 
DIP 원칙에 맞는 설계일 경우
마트 물건 등록, 마트 물건 수량 변경, 마트 물건 제거 등의 메서드를 만든 후
물건이 생길 때 마다 각각의 저수준 모듈들로 확장해 
고수준의 마트 물건 등록에 a제품, b제품 등을 사용하는 것이다.



(1).백준 9838 XMAS는 각 사람들끼리 선물을 교류할 때
차례대로 누구에게 받았는지를 입력하는 문제였다.

다행히 모두 하나씩 누군가에게 주고 중복이 없으며
1번부터 n번까지라는 조건이 있기 때문에
배열을 사용해도 중간에 undefined가 들어가지 않아 배열을 그대로 사용했다.

만약 이름 등 순서가 명확하지 않은 데이터가 입력된다면
배열 내부에 배열을 만들어서 [[1,b],[2,c],[3,d],[4,a]] 형태로 가공한 다음
sort를 할 때 .sort((a,b) => a[0] - b[0]) 형태로 했어야 할 것 같다.

let input = `4
2
3
4
1`.split('\n').map(Number)

let arr = [0]
for(let i = 1 ; i < input.length ; i++){
    arr[input[i]] = i
}

console.log(arr.slice(1).join('\n'))

'회고' 카테고리의 다른 글

[취업준비일지] - 96  (0) 2023.01.24
[취업준비일지] - 95  (0) 2023.01.23
[취업준비일지] - 93  (0) 2023.01.21
[취업준비일지] - 92  (0) 2023.01.20
[취업준비일지] - 91 - 원티드 인턴십 13일차  (0) 2023.01.19

+ Recent posts