분류 전체보기

Langauge/C++

[C++] 우선순위 큐 (priority_queue) STL 사용법, 구현, 정렬

우선순위 큐 우선순위가 가장 높은 자료가 먼저 꺼내진다는 특징이 있다. 이런 큐를 구현하기 위해서는, 모든 원소를 순회하며 우선순위가 가장 높은 원소를 찾는 방법이 있다. 그러나 여기서는 힙이라는 단순한 구조의 이진 트리를 사용해서 새 원소를 추가하고 꺼내는 연산을 O(logN)에 수행한다. 힙 힙의 대소 관계 규칙 부모 노드가 가진 원소는 자식 노드가 가진 원소보다 크거나 같다. 왼쪽/오른쪽 자식에 대한 크기 제약은 없다. 힙의 모양 규칙 마지막 레벨을 제외한 모든 레벨에 노드가 꽉 차있어야 한다. 마지막 레벨에 노드가 있을 때는 항상 왼쪽부터 순서대로 채워져 있다. STL priority_queue 사용법 #include priority_queue 변수명; ex) priority_queue pq; p..

Langauge/C++

[C++] 비트마스크 (bitmask) 의 구현, 다양한 예제

비트마스크란 ? 이진수 표현을 자료구조로 쓰는 기법이다. 비트 연산자 a & b : AND 연산 a | b : OR 연산 a ^ b : XOR 연산 ~a : NOT 연산 a > b 정수 a를 오른쪽으로 b비트 Shift 비교 연산자 → 비트 연산자의 우선순위 집합의 구현 int noPizza = 0; // 공집합 int fullPizza = (1

Algorithm/Programmers

[PG/C++] 프로그래머스 Lv2 - 문자열 압축

https://school.programmers.co.kr/learn/courses/30/lessons/60057# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👻 문제 설명 😔 해결 과정 문자열을 자를 수 있는 단위는 최소 1에서 최대 s의 길이의 절반이다. 모든 경우를 탐색하면서, 문자열 압축을 하였을 때 가장 짧은 길이를 찾는 방식으로 문제를 풀었다. "abcabcabcdede" 의 문자열이 주어졌을 때, x = 3 즉 3개 단위로 자르는 경우를 예제를 들어보겠다. string target = s.substr(i, x); int k = 0; whi..

Algorithm/Programmers

[PG/C++] 프로그래머스 Lv2 - 택배 배달과 수거하기

😙 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/150369# [프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/150369#) 🌸 해결 과정 deliveries와 pickups 배열의 마지막 부분부터 접근하여, cap 만큼의 짐을 배달하고 수거하는 것을 반복하였다. 이 때 무작정 cap 크기의 짐을 실고 가게 되면, 다 배달하지 못하여 돌아올 때 회수할 수 있는 택배의 개수가 줄어들..

Algorithm/Programmers

[PG/C++] 프로그래머스 Lv2 - 메뉴 리뉴얼

🐹 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 😊 해결 과정 1. 주문된 모든 메뉴 조합 orders에 대해서, 코스요리 메뉴로 선정 가능한 후보를 모두 뽑는다. void findCombination(string order, int index, string& result, set& combinations) { if (index == order.size()) { if (result.size() >= 2){ set s; for(ch..

Algorithm/Programmers

[PG/C++] 프로그래머스 Lv3 - 불량 사용자

https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🧐문제 설명 문제에서 banned_id라는 배열로 주어진 아이디의 목록을 분석해, 제재 아이디를 만드는 경우의 수를 구하는 문제이다. ⭐ 해결 과정 나는 이 문제를 중복 set을 이용해 풀었다. 예제 입력 2번을 이용해 설명해보자면, graph를 만들듯이 각 banned_id에 포함되는 user_id들을 찾아 이차원 배열 candidiates에 넣어주었다. 그 다음, 재귀함수를 사용해 candid..

Algorithm/Programmers

[PG/C++] 프로그래머스 Lv3 - 블록 이동하기

https://school.programmers.co.kr/learn/courses/30/lessons/60063 코딩테스트 연습 - 블록 이동하기 [[0, 0, 0, 1, 1],[0, 0, 0, 1, 0],[0, 1, 0, 1, 1],[1, 1, 0, 0, 1],[0, 0, 0, 0, 0]] 7 school.programmers.co.kr 문제 설명 이렇게 board가 주어져 있다면, 빈칸 (0)에서만 로봇을 움직여 (n -1, m -1) 로 가야한다. 갈 수 있는 모든 경우의 수에서 최단 시간을 구하면 된다. 일반적인 BFS 문제와 다르게 로봇은 두 칸을 차지하고, 회전이 가능하다는 점이 특징이었다. 로봇은 어느 방향으로든 90도 회전이 가능하나, 이동하는 방향의 대각선 칸이 벽(1)이라면 회전할 수..

Algorithm/Programmers

[PG/C++] 프로그래머스 Lv2 - [1차] 다트 게임

https://school.programmers.co.kr/learn/courses/30/lessons/17682 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 문자열을 파싱하여 다트 게임에서의 점수를 구하는 문제이다. 해결 과정 (1) 점수는 최대 10까지 있으므로 while문을 돌려 점수를 구해 score 변수에 저장하였다 . (2) 다음 인덱스에 접근해 보너스가 S, D, T인지에 따라 score의 값을 늘려주었다. (3) 다음 위치가 정수라면 옵션이 없는 것이므로 패스하고, 정수가 아니라면 *, #인지 여부를 파악해 점수를 수정하였다. ..

DEV book

자바 기반의 마이크로 설계와 아키텍쳐 구축하기

1. 마이크로서비스 기획 (1) 사용자 유형 분석 사용자의 분류 : 국내 거주 외국인, 내국인 사용자의 명칭 : 사용자 사용자의 역할 : 커뮤니티 조성 및 채팅 기능 사용/자신의 프로필 관리 사용자의 권한 : 글 작성, 댓글 작성, 채팅 기능 사용 사용자들이 속한 조직 : 국내 거주 외국인 (교환학생, 유학, 취업 등) (2) 서비스 수준에서 업무의 흐름을 분석 (3) 핵심 업무 및 우선순위 핵심 업무와 비핵심 업무를 구분 이들 간의 우선순위를 정하고, 기술 검증을 위한 선행 개발/MVP를 뭘로 할지/애자일 스크럼 방법론의 스프린트 백로그의 우선순위로 연계해서 사용할 수 있다. 핵심 업무 게시판 기능 채팅 기능 비핵심 업무 회원 관리 (4) 상관 분석 서비스의 결합 관계를 낮추고 데이터 간 연관성을 최소..

MINGYUM
'분류 전체보기' 카테고리의 글 목록 (15 Page)