[프로그래머스] level.3 - 단속 카메라(C++)
·
🖥️ Study Note/Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 해답 어제 푼 요격 시스템이랑 완전히 같은 문제 https://beankong-devlog.tistory.com/97 #include #include #include using namespace std; int solution(vector routes) { int answer = 0; // 진입 시점에 따라 정렬 auto comp = [](const vector& v1, const vector..
명령(Command) 패턴
·
🖥️ Study Note/Design Patteren
{ 명령 패턴이란? } 명령 패턴은 GoF의 행위 패턴 중 하나로, 요청(명령)을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그에 남기는 패턴이다. 더 간단하게 메소드 호출을 객체로 감싼 형태이다. 콜백을 객체 지향적으로 설계했다고 생각하면 좋다. 요청에 사용되는 각종 명령어들은 추상 클래스와 구체 클래스로 분리하여 단순화한다. { 게임 개발에서 명령 패턴 활용하기 : 캐릭터 조작 } 게임 개발의 다양한 부분에서 명령 패턴을 활용할 수 있겠지만, '명령' 하면 가장 먼저 생각나는 컨트롤러의 입력(명령)에 따라 플레이어를 움직이는 로직을 명령 패턴으로 구현해보자. 명령 패턴을 적용하기 전 코드 void CInputHandler::HandleInput() { i..
디자인 패턴이란?
·
🖥️ Study Note/Design Patteren
{ 디자인 패턴이란? } 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들에 사용할 할 수 있는 정형적 해결 방식을 말한다. 디자인 패턴은 문제 및 배경, 실제 적용 사례, 재사용이 가능한 샘플 코드 등으로 구성되어 있다. “바퀴를 다시 발명하지 마라(Don’t reinvent the wheel)” 라는 말과 같이, 개발 과정 중에서 문제가 발생하면 새로 해결책을 구상하는 것보다 문제에 해당하는 디자인 패턴을 참고하여 적용하는 것이 더 효율적이다. GoF의 디자인 패턴 유형에 따라 생성 패턴 5개, 구조 패턴 7개, 행위 패턴 11개 총 23개의 패턴으로 구성된다. { 디자인 패턴 장단점 } 장점 범용적인 코딩 스타일로 인해 구조 파악이 용이하다. 객체 지향 설계 및 구현의 생산성을 높..
[프로그래머스] level.2 - 요격 시스템(C++)
·
🖥️ Study Note/Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/181188 내 풀이 1번 첫번째 풀이에서는 미사일 요격 범위를 점점 줄여나가다가 더 이상 범위 안에 들어올 수 있는 미사일이 없으면 요격 미사일을 추가하는 방식으로 해결했다. 과정 1. 미사일들을 시작 시점을 기준으로 정렬한다. 2. 첫번째 미사일을 기준으로 범위를 잡는다. 3. 다음 미사일이 범위 안에 들어왔다면, 다음 미사일의 시작점을 범위의 Start 지점으로 설정한다. 그리고 현재 범위의 end와 다음 미사일의 종료점 중 더 작은 것을 범위의 End 지점으로 설정한다. 4. 만약 다음 미사일이 범위 안에 없다면, 요격 미사일을 추가하고 2번으로 돌아가 다음 미사일을 기준점으로 잡고 과정을 반복..
[프로그래머스] level.3 - 이중우선순위큐(C++)
·
🖥️ Study Note/Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/42628 내 해답 문제에 적힌 그대로 우선 순위 큐를 두 개 두어 이 문제를 해결할 수 있다. 우선 순위 큐 중 하나는 내림차순 우선 순위 큐로 최댓값을 삭제하기 위한 용도로 사용한다. 또 다른 하나는 오름차순 우선 순위 큐로 최솟값을 삭제하기 위한 용도로 사용한다. 숫자가 추가되면 두 큐에 숫자를 추가한다. 최댓값 삭제 시, 내림차순 우선 순위 큐에서 숫자를 삭제하고, 최솟값 삭제 시, 오름차순 우선 순위 큐에서 숫자를 삭제하면 된다. 여기서 중요한 점은 숫자의 개수를 카운팅해야 한다는 것이다. 두 큐 중 하나에서만 값을 삭제하기 때문에 모든 숫자가 삭제 되어도 큐에는 여전히 값이 남아있다. 그러므..
[프로그래머스] level.3 - 정수 삼각형(C++)
·
🖥️ Study Note/Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/43105 내 풀이 #include #include using namespace std; int solution(vector triangle) { int answer = 0; // bottom-up 방식 for(int i = triangle.size()-2; i >= 0; --i) { for(int j = 0; j < triangle[i].size(); ++j) { triangle[i][j] += max(triangle[i+1][j], triangle[i+1][j+1]); } } answer = triangle[0][0]; return answer; }
[프로그래머스] level.2 - 스킬트리(C++)
·
🖥️ Study Note/Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/49993?language=cpp 내 풀이 스킬 순서 S에 포함된 스킬을 Queue에 넣어서 순서대로 있는지 비교했다. #include #include #include #include #include using namespace std; int solution(string skill, vector skill_trees) { int answer = 0; for(const auto& st : skill_trees) { queue q; // skill에 있는 스킬들을 모두 q에 넣기 for(const auto& s : st) { auto iter = find(skill.begin(), skill.end(),..
[프로그래머스] level.3 - 야근 지수(C++)
·
🖥️ Study Note/Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/12938 문제 설명 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겁니다.Demi가 1시간 동안 작업량 1만큼을 처리할 수 있다고 할 때, 퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 야근 피로도를 최소화한 값을 리턴하는 함수 solution을 완성해주세요. 제한 사항 works는 길이 1 이상, 20,000 이하인 배열입니다. works의 원소는 50000 이하인 자연수입니다. n은 1,000,000 이하인 자..
[프로그래머스] level.3 - 최고의 집합(C++)
·
🖥️ Study Note/Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/12938 문제 설명 자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 "집합"으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만족하면서 각 원소의 곱 이 최대가 되는 집합 예를 들어서 자연수 2개로 이루어진 집합 중 합이 9가 되는 집합은 다음과 같이 4개가 있습니다. { 1, 8 }, { 2, 7 }, { 3, 6 }, { 4, 5 } 그중 각 원소의 곱이 최대인 { 4, 5 }가 최고의 집합입니다. 집합의 원소의 개수 n과 모든 원소들의 합 s가 매개변수로 주어질 때, 최고의 집합을 return 하는..
[프로그래머스] level.2 - 귤 고르기(C++)
·
🖥️ Study Note/Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/138476 문제 설명 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다. 경화가 한 상자에 담으려는..