인공지능/자동화/로봇의 전망에 대한 인식조사
설문개요
조사 목적
로봇과 우리사회에 대한 시민들의 인식을 조사하기 위함
조사 배경
공장의 자동화 기계, 인간형 로봇, 알고리즘, 소프트웨어, 기계학습(머신러닝) 등을 통해 전통적으로 사람이 수행하던 일을 자동으로 보완하거나 대체하는 경우가 많아지고 있다. 사람이 수행하던 일을 대체하거나 보완하는 컴퓨터를 비롯한 모든 장치들을 통칭해 ‘로봇’으로 부를 수 있다. 현재 우리가 느끼기엔 IT 기술발전이 중요하다고 생각 되어 지고 있는데, 여러 분야의 일반적인 사람들의 인식은 어떨지 조사하다보니, 주어진 원시데이터로 분석하여 시민들의 평가에 따라 군집을 형성해 각 군집의 특성을 파악 해보고자 한다.
설문 데이터 획득 방법
기관 제공 미디어·시사 이슈 웹매거진 <미디어이슈> 및 자체 연구과제에 활용된 설문조사 원시데이터

군집 분석
군집 분석의 목적
각 문항에 대한 등간척도 응답 결과를 토대로 로봇의 인식에 대한 응답자들을 군집으로 분류하기 위함이다.
분석 과정
척도를 전혀 동의 안함, 동의 안함, 대체로 동의함, 매우 동의함으로 설문조사를 실시한 데이터를 순서대로 최소 1, 최대 4의 척도로 데이터를 입력 하였기에 큰 차이를 보이는 것이 어려워, 점수를 표준화하여 연속적인 데이터로 변환 후 군집분석을 실시함.
각각의 응답자들이 로봇에 대한 인식의 군집이 어떻게 나뉘는지 확인하고자 군집분석을 실시하였고, 데이터가 약 1000개로 크기가 큼에 따라서 K-means clustering을 수행하였다. 반복 횟수는 50회로 설정하였고, 9번째 반복에서 중심 군집이 0으로 수렴하여 완전히 분류되었다. 
각 군집의 케이스 수
총 1038개의 응답치 중 군집1에 472개, 군집2에 566개의 개체가 포함 되었다.

<테이블 1> 




각각의 질문 항목을 표준화한 점수에 대한 분산분석의 결과는 <테이블 2>와 같다. 모든 질문 항목에 대해 유의확률이 매우 작게 나왔다. 따라서 모든 질문 항목들 간에 차이가 존재한다. 다시 말하면 각 설문은 차이가 있는 항목이고 각 설문 항목은 군집을 나누는 기준이 될 수 있다. 따라서 모든 질문 항목에 대한 표준화 점수의 군집중심에 대한 해석을 진행해도 된다.

<테이블 2> 




군집 중심의 초기 값은 <테이블 3>과 같다.

<테이블 3>




군집 중심의 최종 값은 <테이블 4>와 같다. 군집 1의 경우 1번, 3번, 4번, 5번, 7번, 8번의 질문 항목에 대해 군집 2에 비해 상대적으로 낮은 점수이면서 음의 값을 보인다. 즉, 1, 3, 4, 5, 7, 8번 질문 항목은 상대적으로 낮은 점수를 주었다. 반대로 군집 2의 경우 2, 6번 질문 항목에 대해 낮은 점수인 음수 값을 보이고 있다. 즉 2, 6번 질문에 대해 대체적으로 낮은 점수를 준 군집이다.

<테이블 4> 




1, 3, 4, 5, 7, 8의 항목의 경우 질문 내용을 보면 기술발전 및 로봇에 대한 긍정적인 내용이다. 이 부분과 앞서 말한 각 군집의 특성의 내용을 종합해보면, 군집 1은 로봇에 대한 긍정적인 질문 내용에 대해 낮은 점수를 부여했다. 즉, 기술발전 및 로봇에 대한 긍정적인 인식이 상대적으로 낮은 군집이라 할 수 있다. 반대로 군집 2는 기술 및 로봇에 대한 부정적인 내용을 가진 2번, 6번 질문 항목에 대해 상대적으로 낮은 점수를 부여한 군집이다. 즉, 기술발전 및 로봇에 대한 부정적인 인식이 낮은 군집이라는 결론을 도출할 수 있다. 

결론
군집 1은 군집 2에 비해 인간의 일자리를 빼앗을 것이라는 인식을 가지고 있으며, 군집 2는 군집 1에 비해 기술 발전은 인류에게 혜택을 주면서 기술발전으로 인한 인간의 보다 창조적이고 감성적인 일을 하게 되며, 그만큼 새롭게 생겨날 직업, 일자리도 많을 것이라고 인식을 가지고 있다. 그러나 표준화 한 점수가 아닌 원점수로 군집분석을 했을 때는 기술발전에 대한 로봇의 인식은 대체적으로 두 군집 모두 동의하는 편이며 군집 2가 군집 1에 비해 상대적으로 더 동의하는 군집으로 볼 수 있다.

판별 분석
목적
기존의 설문조사 RAW데이터를 기반으로 판별분석 모델링을 한다. 모델링한 선형함수를 이용해 일반 국민들의 추가적인 설문 내용을 바탕으로 해당 국민이 로봇에 대해 우리가 나눈 군집의 기준으로 어떤 집단에 속하여 인식하는지 구별할 수 있다. 즉 각 질문 항목들을 변수로 활용하여 일반 국민들의 로봇에 대한 인식 성향을 예측하고 판단할 수 있다.
R을 통한 분석 과정
> robot = read.csv("인공지능,자동화,로봇에 대한 인식조사.csv")
#csv파일 읽어오기
> library(MASS)
#판별분석하기 위한 library 등록
> ld=lda(군집~Q4_1 + Q4_2 + Q4_3 + Q4_4 + Q4_5 + Q4_6 + Q4_7 + Q4_8, data=robot)
#판별분석 함수 lda(종속변수(집단)~독립변수+독립변수)
set.seed(123)
#랜덤함수 고정
> train=sample(nrow(robot),0.7*nrow(robot))
#train data를 쓰기위한 전체데이터중 70%만 추출
robot.train=robot[train,]
#70% train data
robot.test=robot[-train,]
#70%외의 test data
> ld=lda(군집~Q4_1 + Q4_2 + Q4_3 + Q4_4 + Q4_5 + Q4_6 + Q4_7 + Q4_8, data=robot.train)
#train data로 판별분석 실시 – 판별함수 도출
ld.pred=predict(ld, newdata=robot.test)
#predict 함수로 train data로 모델링 한 판별함수에 test data 삽입 후 결과 도출
ld.pred$class #test data를 모델링 한 판별함수 기준으로 집단 나누기
  [1] 2 2 2 1 2 2 2 1 1 1 2 1 2 1 1 2 2 1 2 2 1 1 1 1 1 2 1 1 2 1 1 1 1 2 2 1 2 2 2 2 2 2 2 2 1 1 1 2 1 1 2
 [52] 1 1 2 2 2 1 2 1 2 1 2 2 2 1 2 2 2 2 2 1 1 1 2 2 2 2 1 1 2 1 2 1 1 1 1 1 1 1 2 2 1 2 2 2 1 1 2 1 1 2 1
[103] 1 1 2 2 1 1 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 1 2 2 1 2 1 2 2 1 1 1 1 2 2 1 2 1 1 2 2 2 2 2 2 1 1 2 1 1
[154] 2 1 2 1 2 2 1 2 2 1 2 1 2 1 1 1 2 2 1 1 1 1 1 2 2 1 1 1 1 2 1 1 2 2 1 1 2 2 1 2 1 2 2 2 2 1 2 2 2 2 2
[205] 1 2 1 1 1 1 1 1 1 1 2 1 2 1 2 2 1 2 2 2 2 2 1 2 2 2 2 2 1 1 2 1 2 2 1 2 1 2 2 2 1 1 2 1 2 1 2 1 1 1 1
[256] 1 2 2 1 1 2 2 2 1 2 1 1 2 1 2 1 2 2 1 1 2 2 1 1 2 1 1 2 1 1 2 1 2 2 1 1 2 1 2 2 1 1 2 2 1 2 1 2 2 2 1
[307] 2 1 2 2 1 1
Levels: 1 2

> sum(diag(prop.table(t))) #모델링한 판별함수의 Accuracy(hit ratio) 약 98%
[1] 0.9871795

상응분석
사전 작업 : 교차분석
교차분석으로 연광성이 있는 것으로 판단되는 변수들 간에 대해서만 상응분석을 실시한다. <테이블 5>는 질문 항목과 SQ1에 대해 교차분석을 한 결과이다. 이렇게 모든 질문에 대하여 SQ1~SQ4, 군집까지 총 질문항목 8개에 대해서 모두 교차분석을 실시한다.

<테이블 5> 




교차 분석을 실시한 결과 카이제곱 검정에서 카이제곱의 유의확률을 봤을 때 0.01보다 작으면 유의하다. 즉, 연관성을 가지기 때문에 유의한 질문과의 관계만 뽑아낸다.
결과적으로 각 질문 항목들과의 연관성을 살펴보면,
1번 질문과 성별, 직업, 3번 질문과 직업, 4번 질문과 출생년도, 5번 질문과 직업, 6번 질문과 출생년도, 지역이 각각 연관성이 있다. 

상응분석
포지셔닝맵 분석 및 해석
각각의 연관성이 있는 항목별로 다중상응분석을 실시한다. 상응분석을 실시하는 목적으로는 군집의 특성을 조금 더 구체적으로 알아보기 위해, 그 군집에서 나이, 직업, 성별, 지역에 따라 질문에 대해 어떻게 생각 하는 지를 알아보고자 한다.

<테이블6> 



<테이블 6>은 1번 ‘기술발전은 인류에게 혜택을 줄 것인가’에 대한 질문과 연관성 있는 성별, 직업, 군집에 대한 상응분석 결과(포지셔닝 맵)이다. 이 포지셔닝 맵으로 미루어보면 성별과 직업에 따라서 대체로 동의하는 편이며, 그중 관련 종사자들은 매우 동의하는 편이다. 반대로 농림어업 숙련 종사자, 장치/기계 조작 및 조립 종사자는 동의하지 않는 편이다.

<테이블7> 


<테이블 7>은 ‘사람이 하는 일을 대체해 사람들은 자유롭게 여가생활을 즐길 수 있다’라는 3번 질문과 연관성 있는 직업에 대한 상응분석 결과(포지셔닝 맵)이다. 대부분의 사람들은 중립적인 의견을 보이나 미세하게 대체로 동의하는 쪽에 가깝게 매핑되었다. 로봇 덕분에 여가생활을 즐길 수 있다는 것에 대해 극단적으로 동의하거나 동의하지 않는 의견은 거의 보이지 않는다. 무직과, 관련종사자 사람들이 3번 질문에 대한 포지셔닝이 어느 점수에도 가깝지 않고 어중간한 중간 위치에 위치해있다. 무직자 및 관련 기능종사자라는 직업군은 이 질문에 대해 다양한 의견이 나온 집단이라 할 수 있다. 즉, 이 직업군은 이 질문에 대해 뚜렷한 특성을 나타내지 않는다.

<테이블 8> 




<테이블 8>은 ‘인간은 보다 창조적인 일을 담당하게 될 것이다’라는 4번 질문과 연관성 있는 출생년도에 대한 상응분석 결과(포지셔닝 맵)이다. 1번 군집의 대부분 사람들이 이 질문에 대해 동의하지 않는다고 응답한 것을 알 수 있다. 86~95년생 그룹과 76~85년생 그룹의 경우 평가점수 4곳의 중간쯤 어중간하게 포지셔닝된 것으로 보아 이 그룹들도 다양한 답변이 나온 것으로 판단된다. 즉 86~95년생, 76~85년생 그룹은 이 질문에 대한 특성과 연관성을 뚜렷하게 보이지 않는 그룹이다. 그러나 56~65년생 그룹과 66~75년생 그룹의 경우 상대적으로 3번 응답에 가까운 것으로 나타난다. 즉, 이 연령대의 응답자들은 대체적으로 이 질문에 대해 긍정적인 답변을 했다고 할 수 있다.

<테이블 9> 



<테이블 9>는 ‘인간의 감성, 창의력, 비판력이 요구되는 일/직업은 대체되기 어려울 것이다.’라는 질문과 연관성 있는 직업에 대한 상응분석 결과(포지셔닝 맵)이다. 이 포지셔닝 맵으로 미루어보면 전체적으로 전혀 동의하지 않는 사람들은 없으며, 대부분의 직업군이 대체로 동의하다는 응답과 대체로 동의하지 않는다는 응답을 골고루 한 것으로 보인다. 관련 종사자 들은 로봇이 인간의 감성을 대체하는 일은 하기 쉽지 않을 것이라는 질문에 매우 동의한다.

<테이블 10> 



<테이블 10>은 ‘향후 30년 내 현재 사람 일자리의 50%를 대체할 것이다.’라는 6번 질문과 연관성 있는 거주 지역, 출생년도대한 상응분석 결과(포지셔닝 맵)이다. 이 질문에 대해 전혀 동의하지 않는 다는 생각을 한 사람들은 거의 없는 것으로 보인다. 다만 경기 지역 사람들의 경우 대체적으로 이 질문에 동의하지 않는다는 응답을 많이 한 것으로 보인다. 전북, 광주, 경남, 충남 지역의 경우 이 질문에 대해 매우 동의하고 있다. 이외의 지역은 다양한 응답이 섞여 나온 것으로 보이며 뚜렷한 구분이 없어 보인다.

상응분석 결론 종합
각각의 상응분석 포지셔닝 맵에서 군집분석에서 나왔던 결론처럼 대체적으로 1번 군집과 2번 군집의 큰 차이는 없으나 상대적으로 로봇에 대한 긍정적인 질문에 대해서는 1번은 상대적으로 낮은 점수에 근접하며, 2번 군집은 부정적인 질문에 상대적으로 낮은 점수에 근접하다. 교차분석을 실시하였을 때 연관성 있는 항목으로 5개의 질문이 분류 되었고 인구특성은 대체로 오밀조밀하게 모여 있어 해석하기 어렵다. 그러나 직업에 대해서는 연관성이 있어 보인다. 특히 1번 ‘기술발전은 인류에게 혜택을 줄 것인가’에 대한 질문과 5번 ‘인간의 감성, 창의력, 비판력이 요구되는 일/직업은 대체되기 어려울 것이다.’라는 질문에서 관련 종사자들은 매우 동의한다는 뚜렷한 의견으로 응답했다.

Operations Research Term Project : Iterative Computations of the Transportation Algorithm

 

 

Android term project : 목소리를 음계, 악보로 변환하는 application

코드는 github에 업로드 (글하단 주소)

---------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------

 

 

---------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------

https://github.com/ohshinyeop/voice-to-musicNote-sheet

 

 

ohshinyeop/voice-to-musicNote-sheet

Contribute to ohshinyeop/voice-to-musicNote-sheet development by creating an account on GitHub.

github.com

 

 

 

ohshinyeop/voice-to-musicNote-sheet

Contribute to ohshinyeop/voice-to-musicNote-sheet development by creating an account on GitHub.

github.com

 

감성분석과 머신러닝을 활용한 주식등락 예측

학과 전공 캡스톤디자인 프로젝트입니다.

 

 

 

 

 

 

자전거 수요 예측 데이터에 대한 PCA/FA, Regression

201412047 오신엽

 

1. 분석 방향

다양한 독립변수들과 자전거 수요라는 종속변수를 가진 데이터셋에서 각 변수들에 대해 PCA, FA를 시행한다. 이를 통해 새롭게 추출된 변수들을 새로운 독립 변수로 이용하여 회귀분석을 실시한다. 이 결과와 기존데이터의 회귀분석 결과를 비교한다.

-주제 선정 및 분석 이유

요즈음 공유경제가 많이 활성화되었다. 그 중 가장 큰 인기를 얻고 있는 것이 자동차 공유, 자전거 공유 등이 있다. 얻은 데이터는 데이터 분석 경쟁 사이트인 Kaggle에 올라온 자전거 수요 데이터이다. 이 데이터를 통해 자전거 수요에는 어떤 변수들이 영향을 주는지 알아보고 자전거 공유 서비스 수요 예측에 활용될 것을 기대한다.

 

데이터셋

* datetime - hourly date + timestamp 

* season -  1 = spring, 2 = summer, 3 = fall, 4 = winter

* holiday - whether the day is considered a holiday

* workingday - whether the day is neither a weekend nor holiday

* weather - 1: Clear, Few clouds, Partly cloudy, Partly cloudy

* 2: Mist + Cloudy, Mist + Broken clouds, Mist + Few clouds, Mist

* 3: Light Snow, Light Rain + Thunderstorm + Scattered clouds, Light Rain + Scattered clouds

* 4: Heavy Rain + Ice Pallets + Thunderstorm + Mist, Snow + Fog

* temp - temperature in Celsius

* atemp - "feels like" temperature in Celsius

* humidity - relative humidity

* windspeed - wind speed

* casual - number of non-registered user rentals initiated

* registered - number of registered user rentals initiated

* count - number of total rentals

2. 데이터 전처리 및 데이터 정규화

독립변수와 종속변수를 다른 데이터프레임으로 분리시켰다. 이는 독립변수의 scailing을 진행하기 위함이다.

범주형 변수들에 대해 더미변수를 활용하여 전처리 하는 과정이다.

 전처리 후 총 16개의 변수가 만들어졌다.

 

모든 샘플 데이터에 대해 데이터 scailing을 진행하였다.

다시 종속변수값을 합성해줌으로써 전처리 과정이 모두 끝났다.

 

 

 

 

 

 

 

 

 

 

 

 

 

3. 고유값과 고유벡터

­­

Features 라는 변수에 전처리한 train_std의 트랜스폼한 결과를 저장한다. Numpy 라이브러리에서 제공해주는 cov method를 통해 covariance matrix를 출력한다. 16x16covariance matrix가 출력된다.

­

 

마찬가지로 numpy 라이브러리를 이용해 고유값과 고유벡터를 출력한다. 16개의 변수, 16차원의 데이터셋이므로 16개의 고유값과 고유벡터가 추출된다. 고유벡터중 1이상의 값을 가지는(, 1개 이상의 설명력을 가지는) 8개의 주성분을 얻을 수 있다.

8개의 주성분은 전체데이터의 88%를 설명한다. , 16차원의 데이터가 8차원의 데이터로 줄었음을 알 수 있다. 다시 말하면 기존 변수들을 주성분 1~8로 차원을 축소할 것이고, 이를 새로운 독립변수로 사용할 것이다.

 

4. PCA 라이브러리를 통한 확인

첫번째 코드에서 한 줄의 간단한 코드로 주성분 분석이 모두 이루어지는 것을 볼 수 있다. 만들어진 PCA모델과 기존 데이터셋을 내적하여 새로운 데이터셋을 만들어 냈다. 이후 회귀분석을 위해 종속변수 컬럼을 다시 추가 시켰다.

 

 

 

 

 

 

 

 

 

5. Factor Anaalysis

범주형 변수 제거

범주형 변수는 요인분석에 적합하지 않으므로 이를 제거한다.

 

바틀렛 검정과 KMO 검정을 통해 요인분석이 적합한지 확인

바틀렛 검정에서 P-value가 충분히 작고 KMO 값이 0.5이상이면 요인분석 하기에 적합하다. 본 데이터는 P-value0이고 KMO0.48인데, 기준치보다 약간 작지만, 무시하고 요인분석을 계속 진행한다.

 

 

FactorAnalyzer 라이브러리를 통해 요인분석을 실행한다. 처음엔 회전없이 요인분석을 진행했고, 두번째로는 직교회전인 varimax회전을 통해 진행했다. 진행한 결과 4개의 독립변수에 대해 2개의 요인이 추출된 것을 알 수 있다.

 

 

 요인1에는 온도와 체감온도의 많은 요인적재가 이루어졌다. 이는 외부 온도 라는 요인으로 차원 축소를 할 수 있음을 나타낸다. 요인2에는 습도와 풍속이 반대 방향으로 많은 적재가 이루어졌다. 습도가 낮을 수록, 풍속이 높을 수록 많은 수요가 있음을 나타낸다.

 

기존 데이터셋에 요인분석 결과를 내적하여 새로운 데이터셋을 만들어 준다. 이 데이터셋에 y값을 다시 합성해주고 이후 회귀분석을 실시한다..

 

 

 

 

6. 회귀분석

-정규화 하지 않은 데이터셋의 회귀분석 결과

R-square 값이 0.210으로, 이 회귀식은 무의미한 회귀식이란 것을 알 수 있다. 변수별 P-value값을 보면 season_sp, season_su, weather변수 전부, workingday_not 들이 p-value값이 매우 높으므로 변수에서 탈락시켜도 무방할 것으로 보인다.

-정규화만 진행한 데이터셋의 회귀분석 결과

마찬가지로 R-square값이 매우 낮으므로 적합한 선형모델은 아니다. PCAFA를 진해한 후 설명력에 변화가 있는지 확인하기 위해 결과를 보존한다.

-PCA를 진행한 데이터셋의 회귀분석 결과

PCA를 통해 얻은 새로운 톡립변수들로 회귀식을 만든 결과, 그 설명력은 더 떨어진 것을 알 수 있다. 주성분 5를 제외하면 모든 P-value값이 0이므로 변수로 사용해도 무방하고, 주성분5의 경우 p-value가 매우 높게 나왔으므로 변수에서 제외해도 무방하다. 또한 각 변수의 계수의 표준오차(std err)를 보면 주성분1이 가장 작고 뒤로 갈수록 커지는 것을 알 수 있다. 계수의 표준오차가 작을 수록 추정치의 정확도가 올라간다. 이는 PC1이 분산이 가장 큰 주축이라는 점을 다시 한번 증명해준다.

 

-요인분석을 진행한 데이터셋의 회귀분석 결과

PCA 회귀분석 보다 R-square값이 조금 더 내려갔다. 각 요인들의 p-value값은 모두 0으로 유의미한 변수들이라 할 수 있다.

결론

16차원의 데이터를 차원 축소를 하지 않은 경우와 2가지 방법으로 차원 축소를 하여 회귀분석을 진행한 결과, 후자의 경우가 설명력이 더 떨어진 것을 확인했다.

차원 축소가 이루어지기 전에 기존 데이터로 회귀분석을 실시해도 설명력이 21%밖에 안되기 때문에 주어진 데이터의 독립변수들은 자전거 수요 예측을 하는데 관련성이 없는 것으로 나타난다. 이에 대한 이유를 추측해보면, 맨 처음에 datetime 변수를 제거했다. 이 변수는 상식적으로는 수요에 많은 영향을 미칠 것이라 예상했지만, 전처리 과정이 너무 복잡할 것 같아 제거하고 분석을 진행했다. 이를 미루어보아 datetime 변수 자체와 이 변수와 다른 변수들간의 상관관계가 상당히 존재했음을 짐작할 수 있다.

데이터 자체의 설명력은 아주 낮아 무의미한 회귀식이 도출되었지만, 차원 축소 자체에 대해서는 과정의 의미가 있었다. 차원 축소는 고차원의 데이터를 해석하기 수월한 저차원으로 축소하여 시각화 하는데 편리함을 제공하는 방법이다. 다만, 모든 경우에 차원 축소가 유의미한것은 아니라는 결과가 나왔다. 이는 기존 정교하지 않은 데이터 전처리, 충분하지 않은 독립변수 등 많은 이유로 인해 발생할 수 있다. 그렇지만 주성분분석과 요인분석을 통해 내재적 의미를 도출해내고, 이를 통해 난해한 특성들 제거하고 더 좋은 특징들을 추출해내는 과정은 유의미하다고 생각한다. 데이터의 사회과학적, 개념적 의미를 도출해내는 점은 미흡했지만, 앞서 말한 차원 축소 과정을 통해 각 분석의 의미와 절차, 수학적 원리 등을 많이 공부한 분석 프로젝트였다.

3321 : 최고의 피자

numT = int(input()) #토핑수
costD, costT = map(int, input().split()) #도우가격, 토핑가격
calorieD = int(input()) #도우 칼로리
calorieT = [] #토핑 칼로리 리스트
for i in range(numT):
  calorieT.append(input())  #토핑 칼로리 
calD_1 = calorieD / costD

calAll = 0
for i in calorieT:
  calAll = calAll + int(i)
costAll = costD + numT * costT

calT_1 = []
for i in range(numT):
  calT_1.append(int(calorieT[i]) / costT )
calT_1.sort(reverse=True)

sumCal = calorieD
cnt = 0
for i in calT_1:
  if sumCal / (costD + cnt * costT) > i:
    continue
  elif sumCal / (costD + cnt * costT)  < i:
    sumCal = sumCal + i * costT
    cnt += 1

res = sumCal / (costD + cnt * costT)
print(int(res))
  

------------------------------------------------------------

numT = int(input()) #토핑수
costD, costT = map(int, input().split()) #도우가격, 토핑가격
calorieD = int(input()) #도우 칼로리
calorieT = [] #토핑 칼로리 리스트
for i in range(numT):
  calorieT.append(input())  #토핑 칼로리 
calD_1 = calorieD / costD


calT_1 = []
for i in range(numT):
  calT_1.append(int(calorieT[i]) / costT )
calT_1.sort(reverse=True)

sumCal = calorieD
cnt = 0
for i in calT_1:
  if sumCal / (costD + cnt * costT) > i:
    continue
  elif sumCal / (costD + cnt * costT)  < i:
    sumCal = sumCal + i * costT
    cnt += 1

res = sumCal / (costD + cnt * costT)
print(int(res))
  

------------------------------------------------------------



numT = int(input()) #토핑수
costD, costT = map(int, input().split()) #도우가격, 토핑가격
calorieD = int(input()) #도우 칼로리
calorieT = [] #토핑 칼로리 리스트
for i in range(numT):
  calorieT.append(input())  #토핑 칼로리 
calD_1 = calorieD / costD


calT_1 = []
for i in range(numT):
  calT_1.append(int(calorieT[i]) / costT )
calT_1.sort(reverse=True)

sumCal = calorieD
cnt = 0
for i in calT_1:
  if sumCal / (costD + cnt * costT) > i:
    continue
  elif sumCal / (costD + cnt * costT)  < i:
    sumCal = sumCal + i * costT
    cnt += 1

res = sumCal / (costD + cnt * costT)
print(int(res))
  

+ Recent posts