SW Academy

[CNU SW Academy] 17일차(22.12.23)

narlo 2022. 12. 23. 17:52

하석재 강사님

객체지향의 포인트

- 캡슐화(디버깅의 해결책) / 상속(코드재활용)

 

컴포넌트

- 코드 없이 재활용

- MS COM / Sun(오라클) JavaBeans

JavaBeans를 잘 알아야해요

컴파일이 되면 재활용이 가능한 구조가 된다.

 

컴포넌트의 제약

깔아야한다.

 

안깔고 원격에서 호출 안되나?

=> 분산 컴포넌트 등장

 

분산컴포넌트기술

- 원격호출 / 오브젝트(컴포넌트) 다운로드

- Directory Service

- MS DCOM(Distributed COM) / Java EJB(Enterprise JavaBeans) -> Spring Bean

 

DI(Dependency Injection)

- 객체지향 개념이 발달해서 DI가 나옴

- Angular(Front-end) / Spring(Back-end)

 

POJO(Plain Old Java Object) = object oriented

 

스프링 삼각형

POJO를 설명하기 위한 방법론 3가지

1. IoC / DI

2. AOP

3. PSA

 

1. 다중상속 - C++ / Python

2. 단일상속 - JAVA / C#

 

추상클래스 vs 인터페이스

 

SOLID

- 단일 책임의 원칙

- 개방 폐쇄의 원칙

- 리스코프 치환 원칙

- 인터페이스 분리 원칙

- 의존성 역전의 원칙


프로그래머스 - 프론트엔드 미니 데브코스

명령형 프로그래밍과 선언적 프로그래밍 방식의 이해

 

명령형 프로그래밍

- 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것

- 어떻게 처리하는지에 대한 묘사

 

선언형 프로그래밍

- 무엇을 원하는지에 대한 묘사

- HTML, SQL


코딩테스트 - 공장 색칠

n = int(input())
costs = []
for i in range(n):
    s = list(map(int, input().split(" ")))
    costs.append(s)

for i in range(1, n):
    for j in range(0, 3):
        if j == 0:
            costs[i][j] += min(costs[i - 1][1], costs[i - 1][2])
        elif j == 1:
            costs[i][j] += min(costs[i - 1][0], costs[i - 1][2])
        else:
            costs[i][j] += min(costs[i - 1][0], costs[i - 1][1])
print(min(costs[n - 1]))

처음에는 dfs로 풀었는데, 입출력 조건에서 n의 범위가 0 < n < 10000이라서

너무 많은 함수 호출로 런타임 에러가 발생했다.

현재 상태를 이용해 다음 값을 구할 수 있는 DP 알고리즘이 적당하다고 생각해 DP로 풀었더니 맞았다.