전체 글
-
진료 순서 정하기코딩테스트/LV0 2023. 8. 7. 20:47
문제: 외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요. 입출력 예: emergency result [3,76,24] [3,1,2] [1,2,3,4,5,6,7] [7,6,5,4,3,2,1] [30,10,23,6,100] [2,4,3,5,1] 풀이: const solution =(emergency) =>{ let answer = [...emergency].sort((a,b)=> b - a); return emergency.map(el => answer.indexOf(el)+1) } 기존 emergency 배열을 변경하..
-
외계행성의 나이코딩테스트/LV0 2023. 8. 7. 20:10
문제: 우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요 입출력 예: age result 23 'cd' 51 'fb' 100 'baa' 본인 풀이: function solution(age) { const Alaph = 'abcdefghijklmnopqrstuvwxyz' const b = age.toString().s..
-
배열자르기코딩테스트/LV0 2023. 8. 7. 19:29
문제 : 정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요. 입출력 예 numbers num1 num2 result [1,2,3,4,5] 1 3 [2,3,4] [1,3,5] 1 2 [3,5] 본인 풀이: function solution(numbers, num1, num2) { return numbers.slice(num1, num2 + 1); } Slice?는 JavaScript의 배열 메서드 이다 배열을 특정 범위로 잘라내어 새로운 배열을 반환 하는 것이다. ex) const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, ..
-
전략패턴CS/전략패턴 2023. 7. 19. 20:33
전략패턴 : 객체 지향 프로그래밍에서 사용되는 디자인 패턴 중 하나로 알고리즘을 캡슐화 하고 서로 교환 가능하도록 만드는 패턴이다. 문제를 해결하는 여러 알고리즘들이 있을 때 이들을 동일한 인터페이스를 사용하여 클라이언트에게 제공하고 실행 시점에 알고리즘을 변경 할 수 있게 한다. 즉 쉽게 말해 여러가지 전략 을 하나의 컨텍스트안에 넣어 사용자가 사용하기 쉽게 선택하거나 교환 해주는 것이다. //전략 인터페이스 class SoundStrategy { makeSound(); } // 강아지가 짖는 소리 전략 class DogSoundStrategy extends SoundStrategy { makeSound() { return "멍멍!"; } } // 고양이가 울렁거리는 소리 전략 class CatSoun..
-
DI와 DIP란CS/DI와DIP 2023. 7. 19. 20:06
의존성주입(DI, Dependency Injection) :객체들 간에 의존 관계가 있을 때 의존성을 느슨하게 만들어 유연하고 확장 가능한 코드를 작성하기 위해 사용 된다. 이를 위해 객체가 직접 의존하는 객체를 직접 생성하거나 검색하는 대신, 외부에서 의존 객체를 주입하는 방식으로 사용된다. 예를 들어 클래스 A가B에 의존한다. 의존성 주입을 사용하지 않는다면 A에서 클래스 B를 직접 생성해야한다. 하지만 의존성 주입(DI)을 적용하기 된다면 클래스 A는 B를 직접 생성하지 않고 외부에서 B의 인스턴스를 주입 받아 사용한다. 이를 통해 A와B 사이의 결합도를 낮추고 코드 재사용성과 테스트 용이성을 높일 수 있다. 직접 예를 한번 보자(의존성 주입 없는 경우) class Product { construc..
-
팩토리 패턴CS/팩토리 패턴 2023. 7. 18. 21:36
팩토리 패턴(Factory Pattern) :팩토리 패턴(Factory Pattern)은 상속 관계에 있는 두 클래스를 활용하여 객체 생성을 분리하는 패턴이다. 이 패턴에서 상위 클래스는 객체 생성의 뼈대를 결정하고, 하위 클래스는 객체 생성에 대한 구체적인 내용을 결정한다. 상위 클래스는 객체 생성을 위한 메서드를 정의하고, 이를 템플릿 메서드로 활용한다. 이 메서드는 객체를 생성하는 과정에서 변하지 않는 뼈대 로직을 가지고 있습니다. 하위 클래스들은 이 메서드를 상속받아 구현하면서 실제 객체를 생성하는 구체적인 내용을 결정한다. 이로써 상위 클래스는 객체의 생성 방식에 대해 알 필요가 없어지므로 유연성이 증가하고 클라이언트 코드는 상위 클래스를 통해 객체를 생성하며, 실제로 생성되는 객체의 타입은 하..
-
싱글톤 패턴CS/싱글톤 패턴 2023. 7. 18. 20:59
싱글톤패턴은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 싱글톤 패턴은 프로그램에서 데이터베이스 연결이 필요한 경우, 매번 새로운 연결을 생성하면 리소스 낭비가 발생할 수 있다 그래서 싱글톤 패턴을 사용하여 한 번 연결을 생성한 후에는 해당 연결을 여러 곳에서 공유하여 사용하게 된다. 이렇게 하면 리소스를 효율적으로 관리할 수 있다. 하지만, 싱글톤 패턴은 오용될 경우 부작용을 일으킬 수 있으므로 신중하게 사용해야 한다. 일반적으로 멀티스레드 환경에서 동시에 접근하는 경우에는 동기화 문제에 유의해야한다 또한 싱글톤은 전역 상태를 유지게 되면서 여러곳에서 해당 객체를 사용하고 변경 할 수 있게 때문에 상태 관리가 어려울 수 있다 예기치 않은 상태 변경으로 인해 예상치 못한 동작이 발생할 수 있..
-
디자인패턴CS/디자인패턴 2023. 7. 18. 19:17
디자인 패턴 : 디자인 패턴은 프로그램을 설계하거나 개발할 때 발생할 수 있는 일반적인 문제들을 해결하기 위해 만들어진 일종의 설계 원리나 가이드 이다 이러한 패턴들은 객체 간의 상호 작용이나 구조에 관련된 문제를 다루며, 개발자들이 이러한 문제를 해결하기 위해 반복적으로 사용되는 해결책을 제공한다. 디자인 패턴은 다양한 종류가 있으며, 각각의 패턴은 특정한 문제 상황에서 적합한 해결 방법을 제시합니다. 이러한 패턴들은 공통적인 구조와 규약을 가지고 있어 개발자들이 이를 활용하여 코드를 구성할 수 있다 디자인 패턴은 재사용성과 유지보수성을 향상시키는데 도움을 주며, 소프트웨어의 품질과 확장성을 높이는데 기여합니다. 디자인 패턴은 많은 소프트웨어 개발자들이 공유하고 있으며, 이러한 패턴들은 소프트웨어 개발..