본문 바로가기

전체 글

(55)
[이코테][Chapter 11][문제] 1. 모험가 길드 모험가 길드장인 동빈이는 모험가 그룹을 안전하게 구성하고자 공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날 수 있도록 규정했다. N명의 모험가에 대한 정보가 주어졌을때, 여행을 떠날 수 있는 그룹 수의 최댓값을 구하라. [입력 예시] 2 3 1 2 2 [출력 예시] 2 간단한 그리디 알고리즘 문제이다. 공포도 X가 낮은 사람일 수록 그룹 형성에 유리하기 때문에, 이렇게 접근해준다. #11-1. 모험가 길드 #풀이 #X가 작은 사람일 수록 그룹 형성에 유리하다. #알고리즘 #1. X를 올림차순으로 정렬한다. #2. 한 사람씩 그룹에 넣는다. 이 때 그 사람의 X를 체크한다. #3. 그룹 사람과 X가 같아지면 그룹으로 묶어준다. #4. 이 과정을 N번만큼 반복한다. #..
[이코테][Chapter 3][문제] 4. 1이 될 때까지 [문제] 어떠한 수 N이 1이 될 때 까지 다음의 두 과정 중 하나를 반복적으로 선택해 수행하려 한다. 단, 두번째 연산은 N이 K로 나누어 떨어질 때만 선택할 수 있다. N에서 1을 뺀다. N을 K로 나눈다. N이 1이 될 때 까지 1번 혹은 2번의 과정을 수행해야하는 최소 횟수를 구하는 프로그램을 작성 [입력] 첫째 줄에 N(2
[이코테][Chapter 3][문제] 3. 숫자 카드 게임 숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다. 단, 게임의 룰을 지키며 카드를 뽑아야 하고 룰은 다음과 같다. 1. 숫자가 쓰인 카드들이 N X M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 2. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 3. 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 4. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. [문제] 카드들이 N X M 형태로 놓여 있을 때, 게임의 룰에 맞게 카드를 뽑는 프로그램을 만..
[이코테][Chapter 3][문제] 2. 큰 수의 법칙 큰 수의 법칙이란 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙이다. 단, 배열의 특정한 인덱스에 해당하는 수가 연속해서 K번을 초과해 더할 수는 없다. [입력] 배열의 크기 N, 숫자가 더해지는 횟수 M, 연속해서 숫자를 최대로 더할 수 있는 횟수 K [출력] 큰 수의 법칙에 따라 더해진 답 [예시] 순서대로 2, 4, 5, 4, 6으로 이루어진 배열이 있을 때 M=8, K=3이라고 가정하자. 특정한 인덱스의 수를 연속해서 3번까지 더할 수 있으므로 큰 수의 법칙에 따라 결과는 6+6+6+5+6+6+6+5=46이 된다. 다른 예시로 3, 4, 3, 4, 3으로 이루어진 배열이 있을 때 M=7, K=2라고 가정하면, 결과는 4+4+4+4+4+4+4=28이 된다..
[이코테][Chapter 3][문제] 1. 거스름돈 [문제] 당신은 음식점의 계산을 도와주는 점원입니다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한이 존재한다고 가정합니다. 손님에게 거슬러 주어야 할 돈이 N원일 때 거슬러 주어야 할 동전의 최소 개수를 구하세요. 단, 거슬러 줘야 할 돈 N은 항상 10의 배수입니다. [입력] 1260 [출력] 6 가장 대표적이고, 가장 간단한 그리디 알고리즘 문제이다. 접근법 : 제일 큰 동전부터 거슬러주면서, 갯수를 하나씩 센다. import time n = 1260 #거스름돈 count = 0 #동전의 개수 coin_types = [500,100,50,10] #동전의 종류 start_time = time.time() for coin in coin_types: count += ..
[이코테][Chapter 3] Greedy Algorithm Greedy Algorithm는 "탐욕법"으로 번역 되기도 한다. 사전적인 의미로는 "가장 좋아보이는 방법을 계속 택하는 방법"이라고 하는데, 사실 좀 더 실용적으로 얘기해보면 "동일한 규칙을 계속 반복하는 방법"이라고도 할 수 있다.
랜덤 포레스트 소개 랜덤 포레스트 : 인공지능 기법중 하나이다. 여러 인공지능 기법들을 합쳐보면서, 가장 좋은 결과를 자동을 내어주는 기술 중 하나이다. (전공자를 위한 사전적 정의 : 머신 러닝에서의 랜덤 포레스트(random forest)는 분류, 회귀 분석 등에 사용되는 앙상블 학습 방법의 일종으로, 훈련 과정에서 구성한 다수의 결정 트리로 부터 부류(분류) 또는 평균 예측치(회귀 분석)를 출력함으로써 동작한다. 랜덤 포레스트라는 단어는 다양한 나무로 이루어진 숲을 의미하기도 합니다. 이 공간은 다양한 IT 기술을 접해보는 한 사람의 블로그입니다. 본래 처음에는 ML, DL 에 관심이 많아 그쪽으로 많은 책을 사며 공부했었지만.. 석사, 나아가 박사 커리어가 필요한 인공지능 공부를 할 생각하니깐 암울해져서 그만두었습니..