전체 글

전체 글

    [Java] 다음 큰 숫자 (Programmers, Level 2)

    문제 설명 상세한 설명은 프로그래머스에서 확인할 수 있습니다. 자연수 n을 이진법으로 표현했을 때의 1의 개수가 같으며 n보다 큰 자연수 중 가장 작은 값을 구하는 문제입니다. 예를 들어 4를 이진법으로 표현하면 0100이고, 이보다 크면서 1의 개수가 1개인 수 중 가장 작은 값은 1000인 8입니다. 제한 사항 n

    [SOLID] 객체 지향 설계의 5가지 원칙

    [SOLID] 객체 지향 설계의 5가지 원칙

    배경 2000년대 초반 로버트 마틴(Uncle Bob)이 명명한 객체 지향 프로그래밍 및 설계의 5가지 기본 원칙입니다. 유연하고 재사용 가능한 시스템을 만들고자 할 때 이 원칙들을 적용할 수 있습니다. SOLID (객체 지향 설계) - 위키백과, 우리 모두의 백과사전 ko.wikipedia.org 원칙 1. SRP (Single Responsbility Principle, 단일 책임 원칙) 한 클래스는 하나의 책임만 가져야 한다는 원칙입니다. 쉽게 풀어 설명하면 요구사항이 변경에 따라 영향받는 요소가 한 가지여야 한다는 것입니다. 책임의 범위는 상황에 따라 다르거나 모호할 수 있지만 한 클래스의 변경에 대한 영향력이 적어야 한다는 의미입니다. Controller -> Service -> Reposito..

    [Java] 오픈채팅방 (2019 KAKAO BLIND RECRUITMENT)

    문제 설명 상세한 문제 설명은 프로그래머스에서 확인할 수 있습니다. 카카오톡 오픈채팅방에서 채팅방에 입장 / 퇴장 메시지 출력을 구현하는 문제입니다. 이미 출력된 메시지에 표시된 닉네임은 기존 사용자가 닉네임을 변경할 때 전부 변경됩니다. "Muzi님이 들어왔습니다." "Prodo님이 들어왔습니다." "Muzi님이 나갔습니다." 위 상황에서 Muzi가 나간 후에, Prodo라는 닉네임으로 다시 들어올 경우 기존 채팅방에 남아있던 메시지의 Muzi도 Prodo로 변경됩니다. 닉네임의 중복은 허용하기 때문에 표시되는 닉네임은 겹칠 수 있습니다. "Prodo님이 들어왔습니다." "Prodo님이 들어왔습니다." "Prodo님이 나갔습니다." "Prodo님이 들어왔습니다." 이 때, 기존의 Prodo 닉네임을 사..