본문 바로가기

Java Script/알고리즘 풀이

[알고리즘] 0824

문제 - Codewars_Century From Year (8kyu)

Introduction
The first century spans from the year 1 up to and including the year 100, the second century - from the year 101 up to and including the year 200, etc.

Task
Given a year, return the century it is in.

Examples
1705 --> 18
1900 --> 19
1601 --> 17
2000 --> 20

문제 풀이

function century(year) {
  let yearString = String(year);
  let endNum = yearString.slice(-2,);
  let startNum = yearString.slice(0,-2);
  
  if(endNum === "00"){
    return Number(startNum);
  }else{
    return Number(startNum) + 1;
  }
}
  1. 숫자를 문자열로 바꿔서 끝자리가 00으로 끝나면 앞에 두 숫자를 반환하고 아닐 시 앞에 두 숫자에 + 1인 숫자를 반환하는 방법으로 풀어야겠다고 생각했다.
  2. 따라서 숫자를 쪼개서 if 구문에서 조건문을 작성해야겠다 생각해서 숫자를 문자열으로 바꾸는 변수 선언 후
  3. 끝에서 두 자리 문자열부터 마지막 문자열까지 확인해줄 수 있도록 (-2,)로 slice 인덱스 지정(slice 메소드는 마지막 인덱스를 지정하지 않으면 마지막 글자까지 확인해줌)
  4. 년도가 4자리가 아닐 수 있기 때문에 첫 번째 글자부터 끝에서 두 번째 문자열을 확인해줄 수 있도록 (0,-2)로 slice 인덱스를 지정했다.
  5. 이후 if 구문을 사용해서 만약 끝 두 문자열이 "00"이라면, 현재는 문자열인 startNum을 숫자로 변환한 수를 반환하고, 아닐 시 startNum에서 + 1 된 수를 반환하는 코드를 작성했다.

코드 비교

const century = year => Math.ceil(year/100)
  1. 년도를 100으로 나누고 소숫점 이하의 숫자는 반올림하는 Math.ceil() 메소드를 사용했다. 굿!
    예) 202345년의 세기는 => 202345/100 = 2023.45 => 2024세기
function century(year) {
  if (year <= 100){
    return 1;
  }

  let cen = parseInt(year / 100);
  let rem = year % 100;
  
  return rem === 0 ? cen : cen + 1;
}
  1. 맨 처음 if 구문을 사용해서 100보다 작은 년도들은 1을 반환하는 코드를 작성했다.
  2. cen 변수를 통해 year을 100으로 나눈 후 정수로 변환한 값을 반환하는 코드 작성
    예) year이 2023이면 2023 / 100 = 20.23 이고, 이후 parseInt 함수를 통해 정수를 반환하므로 cen의 반환값은 20
  3. rem 변수를 통해 year을 100으로 나눴을 때 나머지 값 반환하는 코드 작성
    예) year이 2023이면 2023을 / 100 = 20.23이고, 나머지 값을 반환하므로 rem의 반환값은 23
  4. 이후 rem 값이 0이면 cen을 반환하고, 아니라면 cen에 + 1 값을 반환하는 코드 작성

'Java Script > 알고리즘 풀이' 카테고리의 다른 글

[알고리즘] 0826  (0) 2023.08.26
[알고리즘] 0825  (0) 2023.08.25
[알고리즘] 0823  (0) 2023.08.23
[알고리즘] 0822  (0) 2023.08.22
[알고리즘] 0821  (0) 2023.08.21