본문 바로가기

전체 글175

문자열 내 마음대로 정렬하기(연습문제, Level 1) 문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예 strings n return ["sun", "b.. 2022. 6. 2.
최소직사각형 (위클리 챌린지, Level 1) 문제 설명 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함번호 가로길이 세로길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지.. 2022. 6. 2.
[구조 패턴] 퍼사드 패턴 (Façade Pattern) 이란? 퍼사드 패턴 이란? • Façade는 ‘건물의 정면’, ‘건물의 외관’의 뜻으로 건물 외벽에서 보면 안의 구조는 보이지 않음 -많은 서브 시스템(내부 구조)을 거대한 클래스(외벽)으로 감싸서 편리한 인터페이스 제공 • 서브시스템에 있는 인터페이스들에 대한 통합된 인터페이스를 제공 • 서브시스템을 더 쉽게 사용할 수 있도록 만드는 더 높은 수준의 인터페이스를 제공 퍼사드 패턴 구조 Façade System 클래스를 사용하여 Client 클래스에서 사용할 인터페이스를 구현 System 특정 목적을 위한 여러 개의 클래스 존재 Client Façade 클래스를 통해 System 클래스에 접근 가능 사용 예시 • 영화관에서 영화를 상영하고 있는 시스템이 있다고 가정하고, 영화를 상영하기 위한 필요한 절차는 아래.. 2022. 5. 30.
[구조 패턴] 데코레이터 패턴 (Decorator Pattern) 이란? 데코레이터 패턴 이란? • 객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 하는 패턴 • 주어진 상황 및 용도에 따라 어떤 객체에 책임(기능)을 동적으로 추가하는 패턴 • 클래스의 요소들을 계속해서 수정하면서 사용하는 구조에 적합 장점 단점 기존 코드를 수정하지 않고 확장 가능 의미 없는 객체들이 추가될 수 있음 구성과 위임을 통해 실행 중 새로운 행동 추가 가능 너무 많은 사용은 코드의 복잡성 증가 데코레이터 패턴 구조 Component 실질적인 인스턴스를 컨트롤하는 역할 ConcreteComponent Component의 실질적인 인스턴스의 부분으로 책임의 주체의 역할 Decorator Component와 ConcreteDecorator를 동일시 하도록 해주는 역할 ConcreteDeco.. 2022. 5. 26.