Skip to content

Instantly share code, notes, and snippets.

@pgmrDohan
Last active May 18, 2024 08:31
Show Gist options
  • Select an option

  • Save pgmrDohan/2b983f22437186e2019019b4f30b4649 to your computer and use it in GitHub Desktop.

Select an option

Save pgmrDohan/2b983f22437186e2019019b4f30b4649 to your computer and use it in GitHub Desktop.
#include <iostream>
#include <vector>
int main() {
int n;
std::cin >> n;
std::vector<int> apple;
apple.push_back(0);
int sum = 0, time = 0;
while(sum < n) {
time++;
for(int i=sum; i < apple.size(); i++) {
apple[i]++;
if(apple[i] == 16) {
sum++;
apple.push_back(-1);
apple.push_back(-2);
}
}
if(time == 1 || time == 2) apple.insert(apple.begin() + time, 0);
}
std::cout << "사과를 챙기는데 걸린 시간 : " << time << std::endl;
}

어린왕자와 비상식량

어린왕자는 모험을 떠나기 위한 비상식량을 구비하기 위해 달에 사과나무를 심었다. 사과나무의 높이는 10m 이며 열매가 열리는 높이와 위치는 고려하지 않는다.(열매는 나무의 최고 높이에서 열린다) 열매가 된 사과는 하루에 20m 씩 떨어지는 속력으로 (20m/Day) 땅으로 떨어진다. 사과나무의 한 가지에서 봉우리가 피기 까지 1시간이 걸리며 봉우리가 사과 열매가 되기 까지 4시간이 걸린다. 열매가 된 사과는 그 즉시 떨어지기 시작하고 사과 열매가 떨어져 땅에 닿는 순간 나무에 봉우리 한개와 봉우리가 필 가지가 생겨난다. 처음에 사과 나무에는 봉우리 하나, 가지 하나가 있으며 한 시간 후 또 다른 가지 하나가 생겨난다. 어린 왕자는 사과가 땅에 도달 하는 순간 사과를 주울 수 있다고 할 때 어린왕자가 모험에 필요한 n개의 사과를 줍기까지 몇 시간이 걸리는가? (단, 열매가 떨어질때 해당 열매가 달려있던 가지는 사라지며 열매가 되기 위해서는 "가지>봉우리>열매"의 세 단계가 필수적이다.)

입력: 첫 줄에 n이 주어진다.

출력: n개의 사과를 줍기까지의 경과 시간을 출력한다.

예시 입력1: 10

예시 출력1: 48

예시 입력2: 40

예시 출력2: 68

테스트 케이스

n : 기대 출력

1 : 16
2 : 17
3 : 18
4 : 32
5, 6 : 33
7, 8 : 34
9 : 35
10 : 48
11, 12, 13 : 49
14, 15, 16, 17 : 50
18, 19, 20 : 51
21 : 52
22, 23, 24 : 65
25, 26, 27, 28, 29, 30, 31 : 66
32, 33, 34, 35, 36, 37, 38 : 67
39, 40, 41 : 68
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment