Juni_Dev_log

(200126_TIL) 'Space Age' 본문

CodingTest/Exercism

(200126_TIL) 'Space Age'

Juni_K 2021. 1. 26. 15:36

▶ Space Age

Space Age

(Problem)

Given an age in seconds, calculate how old someone would be on:

  • Mercury: orbital period 0.2408467 Earth years
  • Venus: orbital period 0.61519726 Earth years
  • Earth: orbital period 1.0 Earth years, 365.25 Earth days, or 31557600 seconds
  • Mars: orbital period 1.8808158 Earth years
  • Jupiter: orbital period 11.862615 Earth years
  • Saturn: orbital period 29.447498 Earth years
  • Uranus: orbital period 84.016846 Earth years
  • Neptune: orbital period 164.79132 Earth years

So if you were told someone were 1,000,000,000 seconds old, you should be able to say that they're 31.69 Earth-years old.

If you're wondering why Pluto didn't make the cut, go watch this youtube video.

 

- 우주의 나이를 계산하는 문제이다. 

- 행성마다의 궤도기간이 있다. 

- 수성 : 궤도기간은, 0.2408467년이다.

- 금성 : 궤도기간은, 0.61519726년이다.

- 지구 : 궤도기간 1년 (365.25일 / 31,557,600 초)

- 화성 : 궤도기간 1.8808158년

- 목성 : 궤도기간 11.862615년

- 토성 : 궤도기간 29.447498년

- 천왕성 : 궤도기간 84.016846년

- 해왕성 : 궤도기간 164.79132년

- 그래서, 1,000,000,000초를 든다면, 31.69년이라고 볼 수 있다.

- 초를 년수로 계산해보자.

 

(Solution)

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
//
// This is only a SKELETON file for the 'Space Age' exercise. It's been provided as a
// convenience to get you started writing code faster.
//
 
const earth_year = 31557600
 
export const age = (planet,second) => {
  // 1년 = 31,557,600초
  // 주어진 second를 년으로 계산하고, 소수점 3번째자리에서 올려줌.
  if(planet == 'mercury'){
    // 수성 1년 = 1year * 0.2408467
    const mercury_year = earth_year * 0.2408467;
    const convert_mercury_year = Math.round((second/mercury_year)*100)/100;
    return convert_mercury_year;
  }
  if(planet == 'venus'){
    // 금성 1년 = 1year * 0.61519726
    const venus_year = earth_year * 0.61519726;
    const convert_venus_year = Math.round((second/venus_year)*100)/100;
    return convert_venus_year;
  }
  if(planet == 'earth'){
    // 지구 1년
    const convert_earth_year = Math.round((second/earth_year)*100)/100;
    return convert_earth_year;
  }
  if (planet == 'mars'){
    // 화성 1년 = 1year * 1.8808158
    const mars_year = earth_year * 1.8808158;
    const convert_mars_year = Math.round((second/mars_year)*100)/100;
    return convert_mars_year;
  }
  if (planet == 'jupiter'){
    // 목성 1년 = 1year * 11.862615
    const jupiter_year = earth_year * 11.862615;
    const convert_jupiter_year = Math.round((second/jupiter_year)*100)/100;
    return convert_jupiter_year;
  }
  if (planet == 'saturn'){
    // 토성 1년 = 1year * 29.447498
    const saturn_year = earth_year * 29.447498;
    const convert_saturn_year = Math.round((second/saturn_year)*100)/100;
    return convert_saturn_year;
  }
  if (planet == 'uranus'){
    // 천왕성 1년 = 1year * 84.016846
    const uranus_year = earth_year * 84.016846;
    const convert_uranus_year = Math.round((second/uranus_year)*100)/100;
    return convert_uranus_year;
  }
  if (planet == 'neptune'){
    // 해왕성 1년 = 1year * 164.79132
    const neptune_year = earth_year * 164.79132;
    const convert_neptune_year = Math.round((second/neptune_year)*100)/100;
    return convert_neptune_year;
  }
};
 
cs

- 지구 1년을 기준으로, 행성마다의 1년을 계산한 변수들을 만든다.

(ex) earth_year , mercury_year, venus_year 등등

- 함수의 매개변수로 주어지는 second를 받아서 행성의 1년을 기준으로 변환한다.

(ex) convert_mercury_year : 수성을 기준으로 주어진 '초(second)'를 변환한 변수

- if 문으로 planet을 조건문으로 걸러서, 진행하고 return 으로 반환한다.

- (★) 제일 중요한 것은 소수점 셋째자리에서 반올림을 진행해야하기에, Math.round() 를 활용한다.

squll1.tistory.com/entry/javascript%EC%86%8C%EC%88%98%EC%A0%90-%EC%98%AC%EB%A6%BC%EB%B2%84%EB%A6%BC%EB%B0%98%EC%98%AC%EB%A6%BC

 

[javascript]소수점 올림,버림,반올림

올림: Math.ceil(); 버림: Math.floor(); 반올림: Math.round(); Math.ceil(자리수); Math.floor(자리수); Math.round(자리수); 예) var number=123.643 Math.ceil(number); -->124 Math.floor(number); -->123 Ma..

squll1.tistory.com

 

Comments