[알고리즘] 삼성 SW 역량 테스트 컨베이어 벨트 위의 로봇

[삼성 SW 역량 테스트] 컨베이어 벨트 위의 로봇 삼성 SW 역량 테스트 기출 문제입니다. 문제해결 능력을 키우기 위해 온라인 알고리즘 문제를 풀어보고 있습니다. 이곳에서 직접 문제를 풀어볼 수 있습니다. 컨베이어 벨트 위의 로봇 문제 설명 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부터 2N까지의 번호가 매겨져 있다. 벨트가 한 칸 회전하면 1번부터 2N-1번까지의 칸은 다음 번호의 칸이 있는 위치로 이동하고, 2N번 칸은 1번 칸의 위치로 이동한다....

December 6, 2020 · 5 min · Pacientes

[디자인 패턴] 데코레이터 패턴

데코레이터 패턴(Decorator Pattern) 객체에 새로운 기능을 추가하려면 클래스를 확장해야 합니다. 클래스를 확장하는 방법은 상속과 구성(복합 객체 구성) 두 가지입니다. 상속은 클래스 간 강력한 결합 관계를 만들어 객체의 확장성과 유연성을 방해합니다. 데코레이터 패턴은 런타임 상황에서 객체를 동적으로 확장합니다. 데코레이터 패턴 구조 데코레이터 패턴은 런타임 상황에서 객체에 새로운 책임을 동적으로 추가합니다. 런타임 상황에서 책임을 추가한다는 것은 책임이 향후 어떤 형태로 변경될지 모른다는 것입니다. 따라서 데코레이터 패턴은 책임(클래스)를 분산하여 설계하는 것이 핵심입니다. 데코레이터 패턴은 다음과 같은 구성 요소가 있습니다....

December 1, 2020 · 3 min · Pacientes

[디자인 패턴] 복합체 패턴

복합체 패턴(Composite Pattern) 복합체 패턴은 객체 간의 계층적 구조화를 통해 객체를 확장하는 패턴입니다. 계층적 구조는 재귀(Recursive)와 트리(Tree) 구조를 생각하면 좋습니다. 일반적인 복합 객체로부터 복합체 패턴으로 확장해보겠습니다. 복합 객체 복합 객체는 한 객체가 다른 객체를 포함하고 있는 관계를 의미합니다. 대표적인 복합 객체로 컴퓨터가 있습니다. 컴퓨터는 다양한 객체(모니터, 메모리, 저장장치 등)를 포함하고 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 class Computer { public: void setMonitor(std::shared_ptr<Monitor> monitor) { m_monitor = monitor; } void setDisk(std::shared_ptr<Disk> disk) { m_disk = disk; } void setMemory(std::shared_ptr<Memory> memory) { m_memory = memory; } std::shared_ptr<Monitor> m_monitor; std::shared_ptr<Disk> m_disk; std::shared_ptr<Memory> m_memory; std::string m_name = "Computer Composite"; }; Computer는 Monitor, Disk, Memory를 포함하고 있는 복합 객체입니다....

November 30, 2020 · 4 min · Pacientes

[디자인 패턴] 브릿지 패턴

브릿지 패턴(Bridge Pattern) 브릿지 패턴은 객체의 확장성을 향상하기 위한 패턴입니다. 객체의 동작을 처리하는 구현부와 확장을 위한 추상부를 분리합니다. 브릿지 패턴은 유지보수를 간결하게 하기 위한 유용한 패턴입니다. 실제 개발 상황에서 자주 발생하는 불행한 일을 조금이나마 방지하고, 해결할 수 있습니다. 일반적인 문제 상황 매우 간단한 상황을 상상해보겠습니다. 고객의 첫 요구사항에 의해 인사를 건네는 클래스를 작성하였습니다. 1 2 3 4 5 6 7 8 class Hello { public: std::string greeting() { return "Hello"; } }; 작성한 클래스를 다음과 같이 잘 사용하고 있었습니다....

November 29, 2020 · 4 min · Pacientes

[디자인 패턴] 어댑터 패턴

어댑터 패턴(Adapter Pattern) 어댑터 패턴은 코드를 재사용하기 위한 인터페이스를 처리하는 패턴입니다. 또 다른 말로는 래퍼 패턴(Wrapper Pattern)이라고 합니다. 기존의 코드가 새로 변경된 인터페이스와 일치하지 않는 경우가 발생할 수 있는데, 어댑터 패턴은 기존의 코드를 래핑하고 변경된 인터페이스에 맞게 재설계합니다. 어댑터 패턴의 주요 용어 어댑터: 변환을 처리하는 객체 어댑티: 변환을 받아 사용하는 객체 어댑터 패턴의 종류 어댑터 패턴은 두 가지로 구분합니다. 클래스 어댑터: 상속을 사용하여 객체 확장 클래스 어댑터를 구현하기 위해 다중 상속을 활용 최신 언어에서는 다중 상속을 지원하지 않는 경우가 많다....

November 29, 2020 · 2 min · Pacientes