[백준 - G5] 1931. 회의실 배정
·
알고리즘
문제 링크https://www.acmicpc.net/problem/1931문제 설명한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.입력첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간..
[프로그래머스 - lv1] 실패율
·
알고리즘
문제 설명슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다.이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라.실패율은 다음과 같이 정의한다.스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어..
[프로그래머스 - lv1] 두 개 뽑아서 더하기
·
알고리즘
문제 설명정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.제한사항numbers의 길이는 2 이상 100 이하입니다.numbers의 모든 수는 0 이상 100 이하입니다.입출력 예numbersresult[2,1,3,4,1][2,3,4,5,6,7][5,0,2,7][2,5,7,9,12] 문제 분석numbers의 최대 데이터 개수가 100이므로 시간 복잡도는 크게 고려하지 않아도 된다.1초에 최대 \(O(N^8)\) 까지 정도이므로, 최대 O(N^4)까지 가능할 것으로 예상 제출 코드1 - TreeSet 활용오름 차순 정렬과 다른 수로 이뤄져야 하..
디자인 패턴1 - 싱글톤, 팩토리, 전략 패턴
·
CS
디자인 패턴">디자인 패턴프로그램을 설계할 때 발생했던 문제점들을 해결할 수 있도록 하나의 규약 형태로 만들어 놓은 것 1. 싱글톤 패턴(singleton pattern)">1. 싱글톤 패턴(singleton pattern)하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 ex) 데이터베이스 연결 모듈 장점1) 하나의 인스턴스를 다른 모듈들이 공유하므로, 인스턴스 생성 비용이 줄어든다. 단점1) 의존성이 높아진다.2) 단위 테스트(TDD)는 테스트가 서로 독립적이고 어떤 순서로든 실행 가능해야하는데 방해가 된다. 해결 방법의존성 주입(DI)을 통해 모듈 간의 결합을 느슨하게 만든다. 메인 모듈이 직접 다른 하위 모듈에 대한 의존성을 주는 것이 아닌 중간에 의존성 주입자(injector)를 통해 메..
01-2. 컴퓨터 구조
·
CS
컴퓨터가 이해하는 정보 중 가장 작은 단위 = 비트(bit)N비트가 나타낼 수 있는 정보 = \(2^N\) 개바이트(byte)는 8 bit를 묶은 단위로, 1byte로 표현할 수 있는 정보는 \( 2^8 = 256\)개이다. CPU가 한번에 처리할 수 있는 데이터의 크기 = 워드(ward)ex) CPU가 한 번에 16bit를 처리할 수 있다면 1워드 = 16bit 0과 1로 숫자 표현하기">0과 1로 숫자 표현하기2진수로 소수를 나타내는 법 = 부동 소수점 현재는 2진수의 지수와 가수를 IEEE 754 방식으로 저장하고 있음지수와 가수만 알면 소수를 알 수 있음ex) 1.1010111010101 x 2^6 의 수 = 11010111010101컴퓨터가 지수를 저장할 때, bias 값이 더해져 저장된다...
01. 컴퓨터 구조
·
CS
컴퓨터의 핵심 부품CPU, 메모리(주기억장치), 캐시 메모리, 보조 기억 장치, 입출력 장치 CPU데이터와 명령어를 읽고 해석하고 실행하는 부품 CPU 내부 구조 산술논리연산장치(ALU)와 제어장치, 레지스터 ALU : CPU가 처리할 명령어를 실질적으로 연산하는 장치제어장치(CU) : 명령어를 해석해 부품을 작동시키는 제어 신호라는 전기 신호를 내보내는 장치.레지스터 : CPU 내부의 작은 임시 저장장치. 데이터와 명령어를 처리하는 과정의 중간값을 저장. 메모리와 캐시 메모리메인 메모리(RAM, ROM) : 현재 실행중인 프로그램을 구성하는 데이터와 명령어를 저장하는 부품 RAM과 ROM이있다.RAM은 휘발성 저장장치휘발성 : 전원이 공급되지 않을 때, 저장하고 있는 정보가 지워지는 특성 캐시 메모리..
[이코테] 8장 다이나믹 프로그래밍(동적 계획법)
·
알고리즘
다이나믹 프로그래밍(동적 계획법)이미 계산된 결과(작은 문제)는 별도의 메모리 영역에 저장해 다시 계산하지 않도록 해 수행 시간 효율성을 비약적으로 향상시키는 방법일반적으로 Top-Down(하향식)과 Bottom-Up(상향식)으로 구성Top-Down : 재귀 함수 사용. 큰 문제를 해결하기 위해 작은 문제를 재귀적으로 호출해 해결한 후, 큰 문제의 답을 얻을 수 있도록ex) Memorization 방식Bottom-Up : DP의 전형적인 형태로 리스트와 반복문 사용.작은 문제를 하나씩 해결해가며 리스트에 저장해 다음 문제를 해결 다음 2가지 조건을 만족할 때 사용 가능1. 최적 부분 구조(Optimal Substructure)큰 문제를 작은 문제로 나눌 수 있으며, 작은 문제의 답을 모아 큰 문제를 해결..
[SQL] 그룹별 조건에 맞는 식당 목록 출력하기★
·
알고리즘
https://school.programmers.co.kr/learn/courses/30/lessons/131124문제 설명다음은 식당의 정보를 담은 REST_INFO테이블과 식당의 리뷰 정보를 담은 REST_REVIEW테이블입니다. MEMBER_PROFILE테이블은 다음과 같으며 MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_OF_BIRTH는 회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다.Column nameTypeNullableMEMBER_IDVARCHAR(100)FALSEMEMBER_NAMEVARCHAR(50)FALSETLNOVARCHAR(50)TRUEGENDERVARCHAR(1)TRUEDATE_OF_BIRTHDATETRUE REST_REVIEW테..
[이코테] 6장 정렬
·
알고리즘
6장 정렬연속된 데이터를 기준에 따라 정렬하기 위한 알고리즘- 선택 정렬 : 처리되지 않은 데이터 중 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것- 삽입 정렬 : 처리 되지 않은 데이터를 하나씩 골라 적절한 위치에 삽입- 퀵 정렬 : 기준 데이터를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꾸는 방법- 계수 정렬 : 특정한 조건이 부합할 때만 사용할 수 있지만, 매우 빠르게 동작하는정렬 알고리즘1. 선택 정렬처리되지 않은 데이터 중 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것- 시간 복잡도 : N번 만큼 가장 작은 수를 찾아서 맨 앞으로 보내야 하므로, $N + (N - 1) + (N - 2) + ... + 2$ 이므로 $(N^2 + N - 2) / 2 = ..
[이코테] 5장 DFS/BFS
·
알고리즘
DFS/BFS그래프를 탐색하기 위한 대표적인 두 가지 알고리즘탐색 (Search) : 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정코딩 테스트에서 매우 자주 등장하는 유형필요 자료구조 : 스택, 큐, 재귀함수 DFS (깊이 우선 탐색)깊은 부분을 우선적으로 탐색하는 알고리즘스택 혹은 재귀 함수를 이용 [동작 과정]1. 탐색 시작 노드를 스택에 넣고 방문 처리를 한다.2. 스택의 최상단 노드에 방문하지 않은 인접 노드가 1개라도 있으면, 그 노드를 스택에 넣고 방문 처리한다.3. 방문하지 않은 인접 노드가 없으면, 스택에서 최상단 노드를 꺼낸다.4. 더 이상 2번 과정을 수행할 수 없을 때까지 반복 (방문 기준 : 번호가 낮은 순서) 시작 노드 : 1 # DFS 메서드 정의def dfs(graph..