일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Direct12
- 컨디션 변수
- 스케줄링
- 백준
- I/O장치
- 파일시스템 구현
- 다이나믹프로그래밍
- 멀티프로세서
- 타입 객체
- directx
- 디자인패턴
- 병행성
- 알고리즘
- 그리디 알고리즘
- DirectX12
- 영속성
- 동적계획법
- OS
- 자료구조
- 다이나믹 프로그래밍
- 운영체제
- 쓰레드
- 멀티쓰레드
- 병행성 관련 오류
- 렌더링 파이프라인
- 프로그래머스
- codility
- 그리디알고리즘
- DirectX 12
- 락
- Today
- Total
목록분류 전체보기 (500)
기록공간

해결 방법 각 번호의 배수가 되는 최소의 값을 찾는 문제이다. N개의 최소 공배수를 구하기 위해서는 N중 가장 큰 값의 배수에 맞추어 나머지 배수들을 검사하는 방법을 생각해볼 수 있다. 풀이 과정은 다음과 같다. [2, 6, 8, 14] 가장 큰 값은 14이다. -> 14 * 1 = 14 2, 14는 배수이지만 나머지 6, 8이 배수가 아님 => X -> 14 * 2 = 28 2, 14는 배수이지만 나머지 6, 8이 배수가 아님 => X -> 14 * 3 = 32 2, 8, 14는 배수이지만 나머지 6이 배수가 아님 => X ... -> 14 * 12 = 168 2, 6, 8, 14 모두의 배수 => O 가장 최초로 나오는 모든 배수를 만족하는 값이 최소 공배수가 된다. 구현 코드는 다음과 같다. cla..

상속(Inheritance) 이란? 새로 설계(생성)하고자 하는 클래스가 이미 설계되어 있는 다른 클래스의 기능과 중복되는 경우 이미 설계된 클래스의 일부분이나 전체 구조를 공유할 수 있도록 하는 기능을 의미한다. 즉, 상속은 객체를 좀 더 쉽게 만들 수 있는 고수준의 재사용성(reusability)을 확보하고 객체 간의 관계를 구성함으로써 객체 지향의 또 다른 큰 특징인 다형성의 문법적 토대가 된다. 상속은 기존 프로그램의 클래스 내용을 공유함으로써 중복된 코드들을 재작성할 필요 없이 반복적이고 세부적인 작업을 처리하지 않기 때문에 프로그램을 작성하는 시간을 절약할 수 있고 유지보수를 편리하게 할 수 있으며, 프로그램의 길이도 짧아지게 해 준다. 또한, 이미 작성된 프로그램들은 앞서 테스트되었기 때문에..

소프트웨어 생명 주기(Software Life Cycle) 소프트웨어 생명 주기는 소프트웨어 개발 방법론의 바탕이 되는 것으로, 소프트웨어를 개발하기 위해 정의하고 운용, 유지보수 등의 과정을 각 단계별로 나눈 것이다. 소프트웨어 생명 주기는 소프트웨어 개발 단계와 각 단계별 주요 활동 그리고 활동의 결과에 대한 산출물로 표현한다. 소프트웨어 수명주기라고도 한다. 소프트웨어 생명 주기를 표현하는 형태를 소프트웨어 생명 주기 모형이라고 하며, 소프트웨어 프로세스 모형 또는 소프트웨어 공학 패러다임이라고도 한다. 개발자는 문제의 유형이나 개발 방법 등에 따라 특정 모형을 선택하여 사용할 수도 있고, 개별적인 모형을 사용할 수도 있다. 일반적으로 사용되는 소프트웨어 생명 주기 모형에는 폭포수 모형, 프로토타입..

문제와 내용은 "프로그래밍 대회에서 배우는 알고리즘 문제해결 전략" 책을 참고하였습니다. 알고리즘 문제 해결 전략 프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략, 구종만 지음, 인사이트, ISBN 978-89-6626-054-6 새 소식 책 소개 은 새로운 알고리즘 책입니다. 종이에 적힌 의사코드 book.algospot.com 이것을 풀기 위한 가장 간단한 방법은 완전 탐색을 이용해, 단어를 찾아낼 때까지 모든 인접한 칸을 하나씩 시도해 보는 것이다. 그중 한 칸에서라도 단어를 찾을 수 있으면 성공이고, 어느 칸을 선택하더라도 답이 없다면 실패가 된다. 문제의 분할 hasWord()가 하는 일을 가장 자연스럽게 조각내는 방법은 각 글자를 하나의 조각으로 만드는 것이다. 함수 호출 시에 단어의 시작..

해결 방법 동적계획법을 사용해볼 생각을 해봤지만 전혀 접근방법이 안떠올랐다. 한참을 고민했지만 그저 정직하게 풀면 풀리는 문제였다. sum이라는 변수에 1부터 시작해서 차례대로 n이 될때까지 더해준다. 만약 sum이 n이 된다면 그것은 연속한 자연수들로 표현할 수 있는 방법이므로 result를 하나 증가시킨다. 만약 sum이 n을 넘어가면 표현 불가능한 방법으로 다음 시작점부터 시작하면 된다. 이 작업은 시작점을 1에서부터 n / 2까지 진행하면 된다. n / 2까지만 진행하는 이유는 그 이후 숫자들을 시작점으로 놓으면 어떤 경우라도 sum이 n을 넘어가기 때문이다. n / 2까지만 진행하므로 한 숫자(n 자기자신)로 표현하는 방법은 따로 생각해줘야 하므로 result를 1부터 시작한다. n = 15 r..

해결 방법 class Solution { public int solution(int n) { int answer = 0; for(int i = 2; i

에라토스테네스의 체란? 에라토스테네스의 체는 소수를 찾는 방법 중 하나이다. 고대 그리스 수학자 에라토스테네스가 발견했다. 원리 위 그림과 같이 동작하는데, 정리를 해보면 다음과 같다. 2의 배수부터 시작한다고 했을때 2 * 2부터 구하려는 범위(여기서는 120)까지 2의 배수가 있으면 걸러낸다. 작업1 을 n^2 > m (m : 소수를 구하려는 범위)을 만족하는 n의 배수까지 반복한다. (여기서는 120이기 때문에 11^2 > 120을 만족하므로 n은 11이다) 그리고 걸러내지 않은 나머지 값들이 소수가 된다. 구현 구현 코드는 다음과 같다. void Eratos(int m) { // 만약 m이 1보다 작거나 같으면 함수 종료 if(m

해결 방법 최대공약수(gcd)는 유클리드 알고리즘을 사용하여 풀었다. 유클리드 알고리즘 (gcd, 최대공약수) 유클리드 알고리즘이란? 유클리드 알고리즘은 주어진 두 수 사이에 존재하는 최대공약수(gcd)를 구하는 알고리즘이다. 원리 유클리드 알고리즘은 다음과 같은 원리로 동작한다. 임의의 두 자연�� lipcoder.tistory.com 최소공배수(lcm)는 두 수의 배수 중에서 가장 작은 값 이므로, 두 수를 곱한 부분에 최대 공약수를 나누어 준 값이 최소공배수가 된다. 코드 구현은 다음과 같다. class Solution { private int gcd(int a, int b) { int c; while(b != 0) { c = a % b; a = b; b = c; } return a; } priva..