분류 전체보기

문제 링크 성능 요약 메모리: 4.13 MB, 시간: 0.02 ms 문제 설명 1 x 1 크기의 칸들로 이루어진 직사각형 격자 형태의 미로에서 탈출하려고 합니다. 각 칸은 통로 또는 벽으로 구성되어 있으며, 벽으로 된 칸은 지나갈 수 없고 통로로 된 칸으로만 이동할 수 있습니다. 통로들 중 한 칸에는 미로를 빠져나가는 문이 있는데, 이 문은 레버를 당겨서만 열 수 있습니다. 레버 또한 통로들 중 한 칸에 있습니다. 따라서, 출발 지점에서 먼저 레버가 있는 칸으로 이동하여 레버를 당긴 후 미로를 빠져나가는 문이 있는 칸으로 이동하면 됩니다. 이때 아직 레버를 당기지 않았더라도 출구가 있는 칸을 지나갈 수 있습니다. 미로에서 한 칸을 이동하는데 1초가 걸린다고 할 때, 최대한 빠르게 미로를 빠져나가는데 걸리..
문제 링크 성능 요약 메모리: 4.22 MB, 시간: 0.01 ms 문제 설명 Ax + By + C = 0으로 표현할 수 있는 n개의 직선이 주어질 때, 이 직선의 교점 중 정수 좌표에 별을 그리려 합니다. 예를 들어, 다음과 같은 직선 5개를 2x - y + 4 = 0 -2x - y + 4 = 0 -y + 1 = 0 5x - 8y - 12 = 0 5x + 8y + 12 = 0 좌표 평면 위에 그리면 아래 그림과 같습니다. 이때, 모든 교점의 좌표는 (4, 1), (4, -4), (-4, -4), (-4, 1), (0, 4), (1.5, 1.0), (2.1, -0.19), (0, -1.5), (-2.1, -0.19), (-1.5, 1.0)입니다. 이 중 정수로만 표현되는 좌표는 (4, 1), (4, -4..
문제 링크 성능 요약 메모리: 4.22 MB, 시간: 0.04 ms 구분 코딩테스트 연습 > 2020 KAKAO BLIND RECRUITMENT 문제 설명 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다. 용어의 정의 '(' 와 ')' 로만 이루어진 문자..
퍼사드 패턴 여러 개의 서브 시스템이나 복잡한 클래스들을 간단한 인터페이스를 통해 외부로 노출시키는 패턴. 클라이언트에게 획일화된 하나의 인터페이스를 제공함으로써, 클라이언트는 복잡합 동작 과정을 알 필요가 없이 인터페이스의 기능을 사용할 수 있다. 구조 기본 인터페이스 //서브시스템 클래스 class SubSystem1 { public void Method1() { //구현 로직 } } class SubSystem2 { public void Method2() { //구현 로직 } } //퍼사드 클래스 class Facade { private SubSystem1 sub1; private SubSystem2 sub2; public Facade() { sub1 = new SubSystem1(); sub2 =..
데코레이터 패턴 기존의 객체에 동적으로 새로운 기능을 추가할 수 있게 해주는 패턴이다. 새로운 기능을 추가한 서브클래스를 생성하는 것보다 융통성 있는 방법을 제공한다. 본래의 기능을 새로운 기능이 감싸안음으로써 기능을 더할 수 있다. 구조 Component - 동적으로 추가할 서비스를 가질 가능성이 있는 객체들에 대한 인터페이스 ConcreteComponent - 추가적인 서비스가 실제로 정의되어야 할 필요가 있는 객체 Decorator - 객체에 대한 참조자를 관리하면서 Component에 정의된 인터페이스를 만족하도록 인터페이스를 정의 ComcreteDecorator - Component에 새롭게 추가할 서비스를 실제로 구현하는 클래스 기본 인터페이스 public interface Component..
컴포지트 패턴 어떤 객체들의 구성을 표현하기 위해 사용되며, 개별 객체와 복합 객체를 동일한 인터페이스를 통해 다룰 수 있도록 해주는 디자인 패턴이다. 이 패턴은 개별 객체와 복합 객체를 구분하지 않고 동일한 방식으로 취급함으로써 클라이언트 코드가 단일 객체나 객체 구성을 일관되게 처리할 수 있게 해준다. 구조 Component - 개별 객체와 복합 객체가 구현해야 하는 공통 인터페이스를 정의한다. 순환 구조에서 요소들을 포함하는 전체 클래스에 접근하는데 필요한 인터페이스를 정의하며, 적절하다면 그 인터페이스를 구현한다. Leaf - 개별 객체를 나타내며 Component 인터페이스를 구현한다. Component에 Composite - 복합 객체를 나타내며 자식 컴포넌트를 관리하고 Component 인터..
문제 링크 성능 요약 메모리: 13.5 MB, 시간: 1.46 ms 구분 코딩테스트 연습 > 월간 코드 챌린지 시즌1 문제 설명 0과 1로 이루어진 2n x 2n 크기의 2차원 정수 배열 arr이 있습니다. 당신은 이 arr을 쿼드 트리와 같은 방식으로 압축하고자 합니다. 구체적인 방식은 다음과 같습니다. 당신이 압축하고자 하는 특정 영역을 S라고 정의합니다. 만약 S 내부에 있는 모든 수가 같은 값이라면, S를 해당 수 하나로 압축시킵니다. 그렇지 않다면, S를 정확히 4개의 균일한 정사각형 영역(입출력 예를 참고해주시기 바랍니다.)으로 쪼갠 뒤, 각 정사각형 영역에 대해 같은 방식의 압축을 시도합니다. arr이 매개변수로 주어집니다. 위와 같은 방식으로 arr을 압축했을 때, 배열에 최종적으로 남는 ..
브릿지 패턴 구현에서 추상을 분리하여, 이들이 독립적으로 다양성을 가질 수 있도록 만들어준다. 큰 클래스 또는 밀접하게 관련된 클래스들의 집합을 두 개의 개별 계층구조​(추상화 및 구현)​로 나눈 후 각각 독립적으로 개발할 수 있도록 하는 구조 디자인 패턴이다. 구조 Abstraction - 추상적 개념에 대한 인터페이스를 제공하고 객체 구현자에 대한 참조자를 관리한다. RefinedAbstraction - 추상적 개념에 정의된 인터페이스를 확장한다. Implementor - 구현 클래스에 대한 인터페이스를 제공한다. 실질적인 구현을 제공한 서브클래스들에 공통적인 연산의 시그니처만을 정의한다. 일반적으로 Implementor 인터페이스는 기본적인 구현 연산을 구행하고, Abstraction은 더 추상화..
NewtronVania
'분류 전체보기' 카테고리의 글 목록 (6 Page)