본문 바로가기

분류 전체보기131

[이.코.테] Chapter 08 동적 프로그래밍 - 1로 만들기 (java) 1로 만들기 (교재 217p) 난이도 ●◐○ | 풀이 시간 20분 | 시간 제한 1초 | 메모리 제한 128MB 문제정수 X가 주어질 때 정수 X에 사용할 수 있는 연산은 다음과 같이 4가지이다. X가 5로 나누어떨어지면, 5로 나눈다. X가 3으로 나누어떨이지면, 3으로 나눈다. X가 2로 나누어떨어지면, 2로 나눈다. X에서 1을 뺀다. 정수 X가 주어졌을 때, 연산 4개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입출력 조건) 입력 조건 첫째 줄에 정수 X가 주어진다. (1 ≤ X ≤ 30,000) 출력 조건 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 입출력 예시) 입력 예시 출력 예시 26 3 문제 풀이 방법 이 문제를 점화식으로 표현해보면 아래와 .. 2020. 11. 6.
[이.코.테] Chapter 08 다이나믹 프로그래밍 다이나믹 프로그래밍이란?: 큰 문제를 작게 나누고, 같은 문제라면 한 번씩만 풀어 문제를 효율적으로 해결하는 알고리즘 기법 다이나믹 프로그래밍을 사용할 수 있는 조건1. 큰 문제를 작은 문제로 나눌 수 있다. 2. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다. 탑다운(Top-Down) 방식- 재귀 함수를 이용하여 다이나믹 프로그래밍 소스코드를 작성하는 방법을, 큰 문제를 해결하기 위해 작은 문제를 호출한다 하여 탑다운 방식이라 말한다. - '하향식'이라고도 한다. - 메모제이션은 탑다운 방식에 국한되어 사용 보텀업(Bottom-Up) 방식- 단순히 반복문을 이용하여 소스코드를 작성하는 경우 작은 문제부터 차근차근 답을 도출한다고 하여 보텀업 방식이라고 말한다. - '상향식'이라고도 .. 2020. 11. 5.
시간 복잡도와 공간 복잡도 출처 : 이것이 코딩 테스트다 도서 Chapter 01 시간 복잡도 : 알고리즘을 위해 필요한 연산의 횟수 공간 복잡도 : 알고리즘을 위해 필요한 메모리의 양 시간 복잡도 빅오 표기법을 사용 * 빅오 표기법 : 가장 빠르게 증가하는 항만을 고려하는 표기법 빅오 표기법 명칭 O($1$) 상수 시간(Constant time) O($logN$) 로그 시간(Log time) O($N$) 선형 시간 O($NlongN$) 로그 선형 시간 O($N^2$) 이차 시간 O($N^3$) 삼차 시간 O($2^n$) 지수 시간 N이 1,000일 때의 연산 횟수 O($N$) 1,000 O($NlongN$) 10,000 O($N^2$) 1,000,000 O($N^3$) 1,000,000,000 시간 제한이 1초인 문제에 대한 예.. 2020. 10. 31.
tistory 소스코드 D2coding폰트로 변경하기 1. 아래의 코드를 '관리 > 스킨 편집 > HTML 편집 > CSS 탭'의 CSS 소스에 삽입한다. /*d2coding 폰트*/ @import url("//cdn.jsdelivr.net/gh/wan2land/d2coding/d2coding-full.css"); code { font-family: 'D2Coding', monospace !important; font-size: 95%; } 2020. 10. 31.
tisotory에 나눔스퀘어 글꼴 설정하기 1. 아래의 코드를 '관리 > 스킨 편집 > HTML 편집'의 HTML 소스에 삽입한다. 2. CSS 탭에서 Ctrl + F 누른 후, font-family 검색하여 모두 아래와 같이 변경한다. font-family: 'NanumSquare', sans-serif !important; ※ 글 본문의 폰트가 변경되지 않을 시에는 CSS탭에 아래의 코드도 추가한다. article * { font-family: 'NanumSquare', sans-serif !important; } 2020. 10. 31.
tistory에 수식 입력하기 1. 아래의 코드를 '관리 > 스킨 편집 > HTML 편집'의 HTML 소스에 삽입한다. 2. 아래 LaTeX 사이트에서 입력하고자 하는 수식을 설정한다. www.codecogs.com/latex/eqneditor.php 3. 블로그에서 글을 쓸 때 아래와 같이 $$사이에 LaTex에서 복사한 수식을 입력하면 후 등록하면 된다. 4. 등록 완료 후 글 2020. 10. 31.
[프로그래머스] 탐욕법 - 체육복 (Java) 문제 링크 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 접근한 방법 탐색적 알고리즘 - 탐욕적 선택 속성을 사용 : 답의 모든 부분을 고려하지 않고 탐욕적으로만 선택하더라도 최적해를 구할 수 있다 4가지 경우를 생각하여 증명해보자. - 가정 1) 왼쪽에서 오른쪽으로 순회를 한다. 2) i번째에는 체육복이 없다. - 체육복의 여유가 있는 4가지 경우의 수 i-1번째 i+1번째 1 O O 2 O X 3 X O 4 X X 경우 1 순회 방향이 왼쪽부터이므로, i-1번째 이전까지는 순회가 완료된 것이다. 만약, i.. 2020. 10. 30.
탐욕법 탐욕법(Greedy Method) 재귀 호출과 똑같이 여러 개의 조각으로 쪼개고, 각 단계마다 답의 한 부분을 만들어감 ≒ 동적 계획법, 완전 탐색but, 동적 계획법과 완전 탐색은 모든 선택지를 고려해보고 그 중 전체 답이 가장 좋은 것을 찾음 각 단계마다 지금 당장 가장 좋은 방법만을 선택 탐욕적 알고리즘이 사용되는 경우 탐욕법을 사용해도 항상 최적해를 구할 수 있는 문제를 만난 경우, 탐욕법은 동적 계획법보다 수행 시간이 훨씬 빠르기 때문에 유용 시간/공간적 제약때문에 다른 방법으로 최적해를 찾기 너무 어렵다면, 적당히 괜찮은 답(근사해)을 찾는 것으로 타협할 수 있음 탐욕법은 이럴 때 최적은 아니지만 임의의 답보다는 좋은 답을 구하는 용도로 유용 정당성의 증명 : 탐욕적인 알고리즘이 항상 최적해를.. 2020. 10. 30.
[이.코.테] Chapter 03 그리디 - 1이 될 때까지 (Java) 1이 될 때까지 문제 (교재 99p) 난이도 ●○○ | 시간 제한 1초 | 메모리 제한 128MB | 기출 2018 E 기업 알고리즘 대회 어떠한 수 N이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행하려고 한다. 단, 두번째 연산은 N이 K로 나누어떨어질 때만 선택할 수 있다. N에서 1을 뺀다.을 K로 나눈다. N과 K가 주어질 때 N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야 하는 최소 횟수를 구하는 프로그램을 작성하시오. 입출력 조건) 입력 조건 - 첫째 줄에 N(2 ≤ N ≤ 100,000)과 K(2 ≤ K ≤ 100,000)가 공백으로 구분되며 각각 자연수로 주어진다. 이 때 입력으로 주어지는 N은 항상 K보다 크거나 같다. 출력 조건 첫째 줄에 N이 1이 될 때.. 2020. 10. 30.
[이.코.테] Chapter 03 그리디 - 숫자 카드 게임 (Java) 알고리즘숫자 카드 게임 문제 (교재 96p) 난이도 ●○○ | 시간 제한 1초 | 메모리 제한 128MB | 기출 2019 국가 교육기관 코딩 테스트 숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다. 단, 게임의 룰을 지키며 카드를 뽑아야 하고 룰은 다음과 같다. 숫자가 쓰인 카드들이 N X M 형태로 놓여 있다. 이 때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑.. 2020. 10. 30.
[이.코.테] Chapter 03 그리디 - 큰 수의 법칙 (Java) 그리디 알고리즘 : 현재 상황에서 지금 당장 좋은 것만 고르는 방법 큰 수의 법칙 문제 (교재 92p) 난이도 ●○○ | 풀이 시간 30분 | 시간 제한 1초 | 메모리 제한 128MB | 기출 2019 국가 교육기관 코딩 테스트 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙 단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다. 배열의 크기 N, 숫자가 더해지는 횟수 M, 그리고 K가 주어질 때 큰 수의 법칙에 따른 결과를 출력하시오. 입출력 조건) 입력 조건 - 첫째 줄에 N(2 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000)의 자연수가 주어지며, 각 .. 2020. 10. 29.
반응형