본문 바로가기
코테연습

16.Growth of a Population

by hxunz 2022. 3. 26.

Description:

In a small town the population is p0 = 1000 at the beginning of a year. The population regularly increases by 2 percent per year and moreover 50 new inhabitants per year come to live in the town. How many years does the town need to see its population greater or equal to p = 1200 inhabitants?

At the end of the first year there will be: 
1000 + 1000 * 0.02 + 50 => 1070 inhabitants

At the end of the 2nd year there will be: 
1070 + 1070 * 0.02 + 50 => 1141 inhabitants (** number of inhabitants is an integer **)

At the end of the 3rd year there will be:
1141 + 1141 * 0.02 + 50 => 1213

It will need 3 entire years.

More generally given parameters:

p0, percent, aug (inhabitants coming or leaving each year), p (population to surpass)

the function nb_year should return n number of entire years needed to get a population greater or equal to p.

aug is an integer, percent a positive or null floating number, p0 and p are positive integers (> 0)

Examples:
nb_year(1500, 5, 100, 5000) -> 15
nb_year(1500000, 2.5, 10000, 2000000) -> 10

Note:

Don't forget to convert the percent parameter as a percentage in the body of your function: if the parameter percent is 2 you have to convert it to 0.02.

 

function nbYear(p0, percent, aug, p) {
  let year = 0;
  for (let i=0; p0 < p; i++){
    p0 = Math.floor(p0 + p0 * percent/100 + aug);  
    year += 1;
  }
  return year;
}

처음 인구수(p0)이 목표 인구수(p) 미만까지 반복하는 for문을 사용했다. 

계산된 값이 다시 사용되는 계산식이라 처음에는 어떻게 해야되나 고민했는데

p0 = Math.floor(p0 + p0 * percent/100 + aug);
이런식으로 계산식을 만들 수 있었다. 
Math.floor()는 소수점이 포함된 수에서 소수점을 제거하는 함수인데 이거 사용안해도 됐으려나?? ㅋ 
어쨌든 조건에 만족하는 반복문이 진행될때마다 미리 선언해둔
let year = 0;
year에 1씩 더해주었다 왜냐하면 결국 구해야되는 값이 목표 인구수를 채우려면 몇년이 흘러야되는지를 구해야하기 때문 ~
그리고 리턴을 year로 해주면 끝~~~~~
 
맨처음에 p0 <= p라고 해둬서 일부 테스트 코드에서 에러 났었음,,, 이때 무슨에러인제 못찾았어서 답답했었다,,, 휘우우,,

'코테연습' 카테고리의 다른 글

18.Multiples of 3 or 5  (0) 2022.03.29
17.Find the next perfect square!  (0) 2022.03.27
15.Two to One  (0) 2022.03.24
14.Sum of two lowest positive integers  (0) 2022.03.24
13.Sum of Numbers  (0) 2022.03.22

댓글