close_btn
조회 수 2803 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print Files
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print Files

Slide1.jpg 



Slide2.jpgSlide3.jpg

# 빠른 결과 확인을 위해 ipynb 파일도 첨부하였습니다. 감사합니다. 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#%% 1번
import numpy as np #행렬을 위해서 사용
import copy as cp #선언할 때 값만 사용하기 위해서 사용. 파이썬 특성상 변수가 연동이 되어서 불편함.
= [[1,3,0], [3,3,0], [5,3,0], [7,3,1]]
= [[1,4,0], [3,1,0], [4,1,0], [5,4,1], [6,5,0], [7,4,0], [9,4,1], [13,4,1], [17,4,1]]
= [[1,5,0], [3,1,0], [4,1,1], [5,2,1], [11,2,0], [13,2,1]]
def cooking(input):
    temp = np.array(input) #행렬로 바꿈
    end_time = 1
    end_times = 1
    result = []
    for i in range(len(input)): # 총 4회 반복
        if np.array(np.where(temp[end_time >= temp[:,0], 2== 1)).size != 0# end_time >= 주문시간, vip인지 여부 확인 vip이면 밑에꺼 돌림.
            end_times = end_time + temp[np.where(temp[end_time >= temp[:,0], 2== 1)[0][0], 1].item() # 끝나는시간 업데이트(end_times라는 새로운 변수에 임시저장함)
            result.append(input.index(temp[np.where(temp[end_time >= temp[:,0], 2== 1), :][0].tolist()[0]) + 1#result에 선택된 주문 위치 저장하기
            temp = np.delete(temp, np.where(temp[end_time >= temp[:,0], 2== 1)[0][0], axis = 0# temp에서 끝난 주문 제거
            end_time = cp.deepcopy(end_times) # 끝나는 시간 완전 업데이트
        else# vip가 아닌 경우
            if np.array(np.where(temp[end_time >= temp[:,0], 1])).size == 0# 주문 시간 > end_time인 경우 받아서 하는 알고리즘
                if temp.size == 0# temp 사이즈가 0이면 끝내기
                    return(result)
                else:
                    end_times = end_time + temp[0,1].item()
                    result.append(input.index(temp[0,:].tolist()) + 1)
                    temp = np.delete(temp, 0, axis = 0)
                    end_time = cp.deepcopy(end_times)
            else:
                end_times = end_time + temp[end_time >= temp[:,0], 1][0].item() # end_time >= 주문시간 중에서 가장 위에 있는거 select
                result.append(input.index(temp[end_time >= temp[:,0], :][0].tolist()) + 1# result에 선택된 주문 위치 저장
                temp = np.delete(temp, np.where(temp[end_time >= temp[:,0], 1][0]), axis = 0# temp에서 끝난 주문 제거
                end_time = cp.deepcopy(end_times) # 끝나는 시간 완전 업데이트
    return(result) # 정수형으로 바꿈
 
cooking(b)
cooking(a)
cooking(x)
 
#%% 2번
def cooking2(input):
    temp = np.array(input) #행렬로 바꿈
    end_time = [1,1]
    end_times =[1,1]
    result = [[], []]
    def temp1(t): # 함수의 코드 줄이기를 위해서 아예 반복되는 것을 줄임 #이 함수의 용도는 알바 사장 둘 다 end_time이 주문시간보다 높을 때(not vip)
        nonlocal end_times, end_time, result, temp, input #주문를 할당하는 역할임 
        if temp.size == 0#temp사이즈가 0이면 끝내버리기!
            return(result)
        end_times[t] = end_time[t] + temp[0,1].item() #둘 다 end_time >= 주문시간이면 가장 위에 있는 친구 배분
        result[t].append(input.index(temp[0,:].tolist()) + 1)
        temp = np.delete(temp, 0, axis = 0)
        end_time[t] = cp.deepcopy(end_times[t])
    for i in range(len(input)):
        for j in range(2): #위에랑 달라진 점 알바 사장이 select를 해야하기 때문에 for문을 집어넣음 만약 3사람이 되면 3이 들어가면 됨
            if np.array(np.where(temp[end_time[j] >= temp[:,0], 2== 1)).size != 0#위에랑 똑같음... # 둘 다 end_time이 주문시간 보다 높을때 vip 해결은 위에랑 똑같은 코드로 해결가능
                end_times[j] = end_time[j] + temp[np.where(temp[end_time[j] >= temp[:,0], 2== 1)[0][0], 1].item()
                result[j].append(input.index(temp[np.where(temp[end_time[j] >= temp[:,0], 2== 1), :][0].tolist()[0]) + 1)
                temp = np.delete(temp, np.where(temp[end_time[j] >= temp[:,0], 2== 1), axis = 0)
                end_time[j] = cp.deepcopy(end_times[j])
            else:
                if np.array(np.where(temp[min(end_time) >= temp[:,0], 1])).size == 0# 알바 사장 둘 다 end_time < 주문시간 
                    if j == end_time.index(min(end_time)): #알바 혹은 사장이 빨리 끝난 경우 - 이걸 만들어 둔 이유는 알바 사장 둘 다 끝났는데 다음 주문이 들어오는 경우 알바를 시키기 위해서...ㅠㅠ
                        temp1(0if (np.array(np.where(temp[max(end_time) >= temp[:,0], 1])).size == 0else temp1(j) #알바 시키기
                    else:
                        temp1(0if (np.array(np.where(temp[max(end_time) >= temp[:,0], 1])).size == 0else temp1(end_time.tolist().index(min(end_time))) # 알바 시키기
                else#1번 문제랑 코드가 똑같습니다!
                    end_times[j] = end_time[j] + temp[end_time[j] >= temp[:,0], 1][0].item()
                    result[j].append(input.index( temp[end_time[j] >= temp[:,0], :][0].tolist() ) + 1)
                    temp = np.delete(temp, np.where(temp[end_time[j] >= temp[:,0], 1][0]), axis = 0)
                    end_time[j] = cp.deepcopy(end_times[j])
    return(result)
= [[1,3,0], [3,3,0], [5,3,0], [7,3,0]]
cooking2(a)
cooking2(x)
 
#%%추가문제
 
def cooking_n(n,input):
    temp = np.array(input)
    end_time = [ 1 for _ in range(n)] # 주문 시간 1로 n개 받아옴
    end_times = cp.deepcopy(end_time) 
    result = [[] for _ in range(n)] # 빈칸 n개 만듦
    def temp1(t):
        nonlocal end_times, end_time, result, temp, input
        if temp.size ==0:
            return(result)
        end_times[t] = end_time[t] + temp[0,1].item()
        result[t].append(input.index(temp[0,:].tolist()) + 1)
        temp = np.delete(temp, 0, axis = 0)
        end_time[t] = cp.deepcopy(end_times[t])
    for i in range(len(input)):
        for j in range(n): # n명 집어 넣음
            if np.array(np.where(temp[end_time[j] >= temp[:,0], 2== 1)).size != 0:
                end_times[j] = end_time[j] + temp[np.where(temp[end_time[j] >= temp[:,0], 2== 1)[0][0], 1].item()
                result[j].append(input.index(temp[np.where(temp[end_time[j] >= temp[:,0], 2== 1), :][0].tolist()[0]) + 1)
                temp = np.delete(temp, np.where(temp[end_time[j] >= temp[:,0], 2== 1), axis = 0)
                end_time[j] = cp.deepcopy(end_times[j])
            else:
                if np.array(np.where(temp[min(end_time) >= temp[:,0], 1])).size == 0:
                    if j == end_time.index(min(end_time)):
                        temp1(0if (np.array(np.where(temp[max(end_time) >= temp[:,0], 1])).size == 0else temp1(j)
                    else:
                        temp1(0if (np.array(np.where(temp[max(end_time) >= temp[:,0], 1])).size == 0else temp1(end_time.index(min(end_time)))
                else:
                    end_times[j] = end_time[j] + temp[end_time[j] >= temp[:,0], 1][0].item()
                    result[j].append(input.index( temp[end_time[j] >= temp[:,0], :][0].tolist() ) + 1)
                    temp = np.delete(temp, np.where(temp[end_time[j] >= temp[:,0], 1][0]), axis = 0)
                    end_time[j] = cp.deepcopy(end_times[j])
    return(result)
 
=[[1,10,0], [2,3,1], [3,5,0], [4,9,0], [7,10,0], [9,2,0], [11,5,1], [15,3,1], [17,9,0], [50,3,0]]
cooking_n(3, x)
 
cs



List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 R 소스 공유 게시판 이용 관련 공지사항 1 DataMarket 2014.05.21 27077
110 투빅스 8&9기 8주차 LDA - 9기 전민규 file 전민규 2018.03.25 3144
109 투빅스 8&9기 8주차 SVM - 9기 최영제 file :) 2018.03.25 2863
108 투빅스 8&9기 8주차 과제 PCA -9기 신용재 file 신용재 2018.03.23 2831
107 투빅스 8&9기 7주차 과제 논문 요약 - 9기 배현주 file 배현주 2018.03.16 2811
106 투빅스 8&9기 7주차 과제 논문 요약 - 8기 김강열 file 김강열 2018.03.15 2977
105 투빅스 8&9기 7주차 과제 - 9기 김수지 file 김수지 2018.03.15 2865
» 투빅스 8&9기 6주차 과제 - 9기 서석현 file 스르륵 2018.03.08 2803
103 투빅스 8&9기 설 알고리즘 과제 - 9기 백광제 file 백광제 2018.02.25 3295
102 투빅스 8&9기 설 분석 과제 16' 뉴욕 택시 운행시간 예측 - 9기 최영제 :) 2018.02.24 3603
101 투빅스 8&9기 4주차 과제 Random Forest -9기 이잉걸 잉걸 2018.02.15 3223
100 투빅스 8&9기 4주차 과제 Naive Bayes Classification -9기 서석현 file 스르륵 2018.02.14 3121
99 투빅스 8&9기 3주차 과제 K-Nearest Neighbor, K-means 구현 -9기 신용재 1 신용재 2018.02.08 3664
98 투빅스 8&9기 3주차 과제 연관성 분석 - 9기 최영제 :) 2018.02.08 3426
97 투빅스 8&9기 2주차 과제 Gradient Descent, Softmax, Cross Entropy - 9기 서석현 file 스르륵 2018.02.02 3182
96 투빅스 8&9기 2주차 과제 회귀분석/로지스틱 - 9기 최영제 file :) 2018.02.02 3690
95 투빅스 8&9기 2주차 과제 Gradient Descent, Softmax, Cross Entropy - 9기 김명진 file kimji 2018.02.02 3075
94 투빅스 8&9기 1주차 과제 R 9기-신용재 file 신용재 2018.01.25 3448
93 투빅스 8&9기 1주차 과제 R 알고리즘 - 9기 서석현 file 스르륵 2018.01.25 3507
92 투빅스 7&8기 9주차 과제 Neural Network를 이용한 MNIST 분류 - 8기 김민정 민정e 2017.09.23 4869
91 투빅스 7&8기 9주차 과제 Neural Network를 이용한 MNIST 분류 - 8기 최서현 최서현 2017.09.22 4728
Board Pagination ‹ Prev 1 2 3 4 5 6 ... 7 Next ›
/ 7

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5