분류 전체보기 140

[Spring] 제어의 역전 (IoC: Inversion of Control)

토비의 스프링 1장: 오브젝트와 의존관계 제어의 역전 (IoC : Inversion of Control) 특정 클래스의 생성 / 관계 설정에 대한 책임과 권한을 가지는 제 3의 클래스가 존재하여 (=Factory) 프로그램의 흐름에서 필요한 시점에 직접 오브젝트를 생성하고 만들어진 오브젝트의 메소드를 호출 하는 것이 아니라, 클라이언트에서는 내부에서는 이에 대한 동작, 생성에 대해서는 신경쓸 필요가 없이 필요에 따라 오브젝트의 생성 메소드를 호출하여 사용하기만 한다. ==> Client는 요청만! Factory는 설계를 담당! 스프링에서는 IoC오브젝트인 빈 팩토리/어플리케이션 컨텍스트(bean factory/application context) 에서 오브젝트를 생성하며, 여기서 생성될 오브젝트를 빈(B..

[Spring] 객체지향 - 관심사의 분리

토비의 스프링 1장: 오브젝트와 의존관계 관심사의 분리 하나의 관심사가 여기저기 흩어져 있으면 중복되는 코드로 존재하면, 그 관심사에 변경이 일어날 때 엄청난 수정이 발생된다. 먼저, 이는 메소드 추출 리팩토리 기법(extract method)으로 중복된 코드를 하나의 메소드로 정의하여 분리할 수 있다. 아주 기본적인 관심사의 분리 작업이다. 이를 좀 더 유연하게 확장해보자. 예로, 한 기업이 어떠한 Solution을 A고객사와 B고객사에 판매하려고 한다. 단, 이는 기업의 독자적인 기술이 들어가있기 때문에 Binary File만 제공하고 소스는 공개하지 않는다. 이 때, 고객사가 Solution을 사용하기 위한 Setting을 다르게 설정하고 싶다면 어떻게 할 수 있을 까? (Solution는 하나의 ..

[Python][백준] 14500_테트로미노(브루트포스, DFS 풀이)

https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 더보기 문제 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 ..

[Python][백준] 1182_부분수열의 합

https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 더보기 문제 N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 ..

[Network] 라우터 vs 스위치_(1)라우터(Router)란?

** 관련게시글 참고: 2022.03.05 - [CS/Network] - [Network] 라우터 vs 스위치_(2)스위치(Switch)란? 스위치와 라우터의 가장 큰 특징은 스위치는 동일 네트워크 내에서 동작, 라우터는 여러 네트워크 사이에서 동작한다는 것이다. 이 게시글에서는 각각의 특징과 데이터 전송흐름에 대해서 공부해보려 한다. - 라우터란 출발지에서 목적지까지 데이터를 전송할 때, 중간에는 수많은 네트워크들이 존재하고, 라우터로 서로 연결되어있다. 라우터에서 목적지와 관련된 네트워크를 판단해 해당 라우터로 IP패킷 데이터를 전송하는것을 라우팅이라고 한다. 라우터는 네트워크계층에서 동작하며, 이 과정에서 네트워크 인터페이스 층 프로토콜 헤더(이더넷 헤더 등) 이 교체된다. 라우터에는 복수의 인터페..

CS/Network 2021.05.20

[Network] 이더넷 vs 무선LAN_(2)무선LAN이란?

** 이전게시글 참고: 2021.05.20 - [CS/Network] - [Network] 이더넷(Ethernet)이란? 지난 게시글에서는 인터페이스 간 데이터 전송에 쓰이는 프로토콜 중 이더넷(유선)에 대해서 공부해보았다. 이번에는 나머지 하나인 무선 LAN에 대해 알아보자. - 무선LAN이란 : 유선 케이블 배선이 없이 LAN을 만드는 기술로, 데이터의 전송메체는 전파이다. 무선LAN을 구성하는 구조는 Infrastructure와 Ad Hoc 두가지가 있다. (무선LAN이라고 하면 대부분 Infrastructure 모드를 말한다) 1) Infrastructure 모드: 유선 이더넷 네트워크와 연결되어있는 무선 LAN 엑세스포인트, 기기를 엑세스포인트에 연결(*어소시에이션) 하기 위한 무선 LAN인터페..

CS/Network 2021.05.20

[Network] 이더넷 vs 무선LAN_(1)이더넷(Ethernet)이란?

** 관련게시글 참고: 2021.05.20 - [CS/Network] - [Network] 무선LAN이란? 동일 네트워크 내에서 인터페이스 간 데이터 전송에 쓰이는 프로토콜에는 이더넷(유선)과 무선LAN이 있다. (->네트워크 인터페이스 층) 그 중에서 이더넷에 대해 알아보자. - 이더넷이란 LAN, WAN 등의 네트워크 환경에서 각 기기들이 케이블선(전송매체)을 통해 데이터를 주고받을 수 있도록 만들어진 기술이다. 이 때, MAC(Media Access Control Address)주소를 통해서 이더넷 인터페이스를 특정한다 (각각의 기기를 구별) 이더넷 헤더는 출발지/목적지 MAC 주소와 타입코드를 포함한다 - 이더넷 연결형태 (토폴로지 topology) 1) 버스형 (Bus(=Line) topolog..

CS/Network 2021.05.20

[Python][백준] 1759_암호 만들기

https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 더보기 문제 바로 어제 최백준 조교가 방 열쇠를 주머니에 넣은 채 깜빡하고 서울로 가 버리는 황당한 상황에 직면한 조교들은, 702호에 새로운 보안 시스템을 설치하기로 하였다. 이 보안 시스템은 열쇠가 아닌 암호로 동작하게 되어 있는 시스템이다. 암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음(a, e, i, o, u)과 최소 두 개의 자음으로 구성되어 있다고 알려져 있다. 또한..

[Python][백준] 1476_날짜 계산

https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 더보기 문제 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타내는 수를 E, 태양을 나타내는 수를 S, 달을 나타내는 수를 M이라고 했을 때, 이 세 수는 서로 다른 범위를 가진다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19) 우리가 알고있는 ..

[Python][백준] 2309_일곱 난쟁이

https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 더보기 문제 왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다. 아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다. 아홉 난쟁이의 키가 주어졌을 때, 백설..