\(@^0^@)/

[JS] λ°±μ€€ 1065번 ν•œμˆ˜ λ³Έλ¬Έ

μ•Œκ³ λ¦¬μ¦˜

[JS] λ°±μ€€ 1065번 ν•œμˆ˜

minjuuu 2021. 9. 30. 01:23
728x90

🐱‍πŸ‘“ 1. 문제 : 1065

https://www.acmicpc.net/problem/1065


πŸ”₯ 2. 풀이 + μ½”λ“œ

const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(file).toString().split('\n');
let num = Number(input[0]);

// n은 1000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μΈλ°, 1000은 ν•œμˆ˜κ°€ μ•„λ‹ˆλ―€λ‘œ 패슀

// n이 ν•œμžλ¦¬ 일 경우 => 1λΆ€ν„° 9κΉŒμ§€λŠ” μˆ˜κ°€ ν•˜λ‚˜λ°–μ— μ—†λŠ” λ“±μ°¨μˆ˜μ—΄
// n이 λ‘μžλ¦¬ 일 경우 => 10λΆ€ν„° 99κΉŒμ§€λ„ λ“±μ°¨μˆ˜μ—΄μ΄ 될 수 밖에 μ—†μŒ. 11, 12, 13 λ“±

// n이 μ„Έμžλ¦¬ 일 경우 (100 ~ 999)=> 각 자리의 숫자λ₯Ό κ΅¬ν•΄μ„œ,
// 100의 자리 숫자 - μ‹­μ˜ 자리 숫자 = μ‹­μ˜ 자리 숫자 - 일의 자리 숫자 κ°€ μ„±λ¦½ν•˜λ©΄ count에 λˆ„μ μ‹œν‚΄.
// ex) 158이라면 1 - 5 = 5 - 8 => -4 = -3 μ΄λ―€λ‘œ ν•΄λ‹Ή μ•ˆλ¨
// ex) 456이라면 4 - 5 = 5 - 6 => -5 = -1 μ΄λ―€λ‘œ count에 λˆ„μ !

function printHunsu(){
    let count = 0;
    // 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , 1000보닀 μž‘κ±°λ‚˜ 같은 수
    for (let i = 1; i <= num; i++) {
    let hun = Math.floor((i % 1000) / 100);
    let ten = Math.floor((i % 100) / 10);
    let one = i % 10;

    // 100보닀 μž‘μ€ μˆ˜λ“€(1-99)은 λͺ¨λ‘ λ“±μ°¨μˆ˜μ—΄μ΄λ‹ˆ, count에 λˆ„μ 
    if (i < 100) {
      count++;

      // μ„Έμžλ¦¬ 수 (100-999)
    } else if (100 <= i && i < 1000) {
      if (hun-ten === ten - one) {
        count++;
      }
    }
  }
  return count;
}
console.log(printHunsu(num));

⚑ 3. μ†Œκ°

이제 점점 μ–΄λ €μ›Œμ§„λ‹€... λ¬Έμ œλΆ€ν„° μ΄ν•΄ν•˜κΈ° μ–΄λ €μ›Œμ§€λŠ” 것 같은데 λ¬΄μ„œμ›‘γ…‡..
μ½”λ“œ μ§œλŠ” 건 생각보닀 어렡지 μ•Šμ€λ° 응 거짓말 νŒ¨ν„΄μ„ μ•Œμ•„λ‚΄μ•Ό ν•˜λŠ” λ¬Έμ œμž„.

λͺ¨λ₯΄κ² μœΌλ©΄, κ·Έλƒ₯ λ‹€λ₯Έ κ°œλ°œμžλΆ„λ“€ μ½”λ“œ 보고 μ΄ν•΄ν•œ λ‹€μŒ, 잘~ μ •λ¦¬ν•΄μ„œ
λ‹€μŒλ²ˆμ— 같은 문제 λ˜λŠ” λΉ„μŠ·ν•œ μœ ν˜•μ„ λ§Œλ‚¬μ„ λ•Œ, κΈ°μ–΅ν•΄μ„œ ν’€ 수 있으면 그게 μ§€κΈˆ μƒν™©μ—μ„œ 베슀트인 것 κ°™λ‹€ :)

 

728x90