728x90

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

Code

https://github.com/DasolPark/Algorithm_JavaScript/blob/ebb4130f5a91e299f73bbe1e4e6d7986538d6e2b/Baekjoon/2908.js

😢 순서를 뒤바꾸는 방법으로 간단하게 푼 문제(Reverse Int or String Algorithm 참고)

😊 입력값으로 받은 숫자 StringArray로 나누고(split('')) reduce를 이용하여 순서를 뒤바꿔 줬다.
그런 후 각 세자리 숫자만큼 나눠서(split(' ')) 배열에 저장하고 Math.max.apply()를 이용해 더 큰 값을 구해줬다.
(아래 Full Code를 참고하면, reduce를 쓰지않고 다른 방법을 사용하여 푼 예제를 볼 수 있다)

✔ String.prototype.split('')

element 하나하나씩 나눠서 배열로 return해줬다. ( [ '7', '3', '4', ' ', '8', '9', '3' ] )

✔ Array.prototype.reduce()

안에 순서를 뒤바꾸는 reduce function을 주입하여 return해줬다. ( '398 437' )

✔ String.prototype.Split(' ')

가운데 공백(space)을 이용해 세자리 숫자씩 각각 나눠줬다. ( [ '734', '839' ] )

✔ Math.max.apply()

apply()에 숫자를 넣어서 max(더 큰)값을 구해줬다

위의 Skill들은 JavaScript - helper methods 카테고리에서 간단한 사용방법을 확인할 수 있다.

Full Code

// 2nd Solution(reduce(), Math.max.apply())
 
// For submit
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim();
 
// For local test
const input = '734 893';
const revEntire = input.split('').reduce((rev, numChar) => numChar + rev, '');
const eachNumArr = revEntire.split(' ');
const max = Math.max.apply(null, eachNumArr);
 
console.log(max);
 
// 1st Solution(reduce, Math.max.apply())
 
// For submit
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim();
 
// For local test
// const input = '734 893';
// const reverseInt = input
// .split('')
// .reduce((rev, num) => {
// return num + rev;
// }, '')
// .split(' ');
// const max = Math.max.apply(null, reverseInt);
 
// console.log(max);
 
// 3rd Solution(for...of, No Math.max())
 
// For submit
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim();
 
// For local test
// const input = '734 893';
// let rev = '';
 
// for (let numChar of input) {
// rev = numChar + rev;
// }
 
// const eachNumArr = rev.split(' ').map(num => parseInt(num));
// let max = 0;
 
// for (let i = 0; i < eachNumArr.length; i++) {
// if (eachNumArr[i] > max) {
// max = eachNumArr[i];
// }
// }
 
// console.log(max);
 
// 4th Solution(reverse())
 
// For submit
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim();
 
// For local test
// const input = '734 893';
// let rev = input
// .split('')
// .reverse()
// .join('');
 
// const eachNumArr = rev.split(' ').map(num => parseInt(num));
// let max = 0;
 
// for (let i = 0; i < eachNumArr.length; i++) {
// if (eachNumArr[i] > max) {
// max = eachNumArr[i];
// }
// }
 
// console.log(max);
728x90

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

Code

https://github.com/DasolPark/Algorithm_JavaScript/blob/123b9d1a5e69e84767efb10bce4bf7d50614da45/Baekjoon/1157.js

😢 '?'를 출력하는 조건 때문에 조금 고민한 문제.
Max Chars Algorithm(가장 많이 쓰인 문자 찾기 알고리즘)이랑 비슷한데 조금 달랐다.
그래서 Max Chars에서 사용한 스킬을 접목시켜보고 싶었다.

😊 먼저, charMap Object를 만들어주고, for ... of를 사용해서 각 문자가 쓰인 만큼 Object에 저장해주었다.
(key문자, value쓰인 개수)
max를 구하는 방법은 Math.max.apply를 이용해서 다르게 구해주었다.
for loop을 한 번 더 쓰고싶지 않았기 때문이다.(쓴 것과 속도는 비슷할듯)

다시 for ... in 을 열어주고, 미리 구한 max같은 것이 있다면 counter를 증가시켜줬다.
만약 counter가 1개만 증가했다면, 가장 많이 쓰인 문자는 1개인 것이고, 1개가 넘는다면 같은 max가 존재한다는 것!
결과적으로, 만약 counter > 1이라면 '?'를 출력하고 return, 아니라면 maxChar(가장 많이 쓰인 문자)를 출력해주었다.

다른 사람들이 푼 것도 살펴봤지만, 풀이 방법은 비슷하고, 가독성이 좋은 코드가 없어서 그냥 보기만 했다.(속도는 빨랐다)
내 코드가 가독성은 더 좋다고 생각하는데, 아마 Object, Ternary, for ... of, for ...in 그리고 Object.values를 모른다면 어려울 것 같긴 하다. 위의 개념은 JavaScript - helper methods or Grammar 카테고리에서 간단한 사용방법을 볼 수 있다.

✔ Object {}

charMap = { 'a': 1, 'b': 3 }; 이렇게 저장된다고 생각하면 된다.

✔ Ternary(삼항 조건 연산자)

charMap[char] = charMap[char] ? charMap[char]+1 : 1;
charMap[char]이 있다면 +1, 없다면 1을 넣어준다는 뜻이다.

✔ for ... of

classic for loop과 같지만, index범위를 지정하는 것이 없고, 알아서 값을 하나씩 가져온다고 생각하면 된다.
array-like를 사용할 때 이용 가능하다.

✔ for ... in

위의 for of와 같지만, Object의 for loop을 사용하기 위해 쓰는 문법이다.

✔ Object.values()

{ 'a': 1, 'b': 3 } 이라는 Object가 있을 때, [ 1, 3 ]처럼 values만 뽑아준다.

위의 Skill들은 JavaScript - helper methods or Grammar 카테고리에서 간단한 사용방법을 볼 수 있다.

Full Code

// 2nd Solution
 
// For submit
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim();
 
// For local test
const input = 'Mississipi';
const charMap = {};
 
for (let char of input.toLowerCase()) {
charMap[char] = charMap[char] ? charMap[char] + 1 : 1;
}
 
let max = Math.max.apply(null, Object.values(charMap));
let maxChar = '';
let counter = 0;
for (let char in charMap) {
if (charMap[char] === max) {
maxChar = char;
counter++;
}
if (counter > 1) {
console.log('?');
return;
}
}
 
console.log(maxChar.toUpperCase());
 
// 1st Solution
 
// For submit
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim();
 
// For local test
// const input = 'Mississipi';
// const newStr = input.toLowerCase();
// const charMap = {};
 
// for (let char of newStr) {
// charMap[char] = charMap[char] ? charMap[char] + 1 : 1;
// }
 
// let max = 0;
// for (let char in charMap) {
// if (charMap[char] > max) {
// max = charMap[char];
// maxChar = char.toUpperCase();
// }
// }
 
// let counter = 0;
// for (let char in charMap) {
// if (charMap[char] === max) {
// counter++;
// }
// if (counter > 1) {
// console.log('?');
// return;
// }
// }
 
// console.log(maxChar);
728x90

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

Code

https://github.com/DasolPark/Algorithm_JavaScript/blob/40b59357968466b842f18f3246d2964883b97c86/Baekjoon/2675.js

😢 긴가민가? 하면서 계속 진행하며 풀어봤더니 해결된 문제. 문자열은 역시 배열 index를 잘 다뤄야 좋다(문자열도 배열이니까)

😊 T에 Test Case 수를 저장하고, 그 수만큼 반복되는 for loop을 열어준다.
반복할 수인 R을 따로 저장해주고, 반복될 문자열 S도 따로 저장해주는데, 특히 S는 배열 String에서 그냥 String으로 변환해준다.
( 처음에 입력값을 가져올 때 R과 S는 함께 있으므로, split(' ') 후 slice를 이용해 잘라준다)
마지막으로, 문자열의 길이 S만큼 반복하는 for loop안에 반복할 수 R만큼 반복하는 for loop을 열어줘서 같은 문자를 P에 중복 대입해준다. 한 문장이 끝날 때마다 console.log(P);를 통해 출력해주면 된다.

✔ parseInt()

String을 Number로 변환해주기 위해 사용하였다.
(자세한 내용은 JavaScript-helper method 카테고리에 있다)

✔ split(' ')

R과 S를 분리하기 위해 사용하였다.
(자세한 내용은 JavaScript-helper method 카테고리에 있다)

✔ slice()

R은 index 0, S는 index 1에 있으므로, slice를 이용해 잘라서 저장해준다.
(자세한 내용은 JavaScript-helper method 카테고리에 있다)

Full Code

// Repeat String
 
// 2nd Solution(Understandable code)
 
// For submit
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
 
// For local test
const input = ['2', '3 ABC', '5 /HTP'];
const T = parseInt(input[0]);
 
for (let i = 1; i <= T; i++) {
const R = parseInt(input[i].split(' ').slice(0));
const S = input[i]
.split(' ')
.slice(1)
.toString();
let P = '';
 
for (let j = 0; j < S.length; j++) {
for (let k = 0; k < R; k++) {
P += S[j];
}
}
console.log(P);
}
 
// 1st Solution
 
// For submit
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
 
// For local test
// const input = ['2', '3 ABC', '5 /HTP'];
// const T = parseInt(input[0]);
 
// for (let i = 1; i <= T; i++) {
// const testCase = input[i].split(' ');
// const R = parseInt(testCase[0]);
// let result = '';
// for (let j = 0; j < testCase[1].length; j++) {
// for (let k = 0; k < R; k++) {
// result += testCase[1][j];
// }
// }
// console.log(result);
// }
728x90

✨ 주어진 array에서 찾고자하는 element의 index를 반환, 없다면 -1을 반환하는 helper method
(index는 가장 먼저 발견된 element 기준으로 반환된다)

💻Example Code

const arr = 'gamgongsa';

console.log( arr.indexOf('a') );
console.log( arr.indexOf('g') );
console.log( arr.indexOf('z') );

실행 결과('a'의 index는 1, 'g'의 index는 0, 'z'는 없기 때문에 -1)

😋 긴 문자열이 주어지고, 여기서 내가 원하는 알파벳이 있는지 없는지를 확인하고자 할 때 쓰기 좋은 helper method
알파벳 찾기(Find alphabet) 알고리즘 문제를 풀 때 사용했다.

👉 자세한 내용은 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

 

Array.prototype.indexOf()

The indexOf() method returns the first index at which a given element can be found in the array, or -1 if it is not present.

developer.mozilla.org

 

'JavaScript > Built-in Method etc.' 카테고리의 다른 글

Array.prototype.unshift()  (0) 2020.01.04
String.fromCharCode()  (0) 2020.01.01
String.prototype.match()  (0) 2019.12.31
String.charCodeAt()  (0) 2019.12.31
new String()  (0) 2019.12.29
728x90

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

Code

https://github.com/DasolPark/Algorithm_JavaScript/commit/32a64dbe8893d8f448507bb4900a155eb54a5764

😢 C언어로 자주 알파벳 가지고 놀았었는데, 기억이 잘 나지 않아서 검색을 좀 했다.
JavaScript로 ASCII Code 다루는 방법을 익혀서 새로웠지만 재밌었다.

😊 Solution 1)
단순하게 한 번 풀어보고자, 모든 알파벳을 배열에 담고 비교해보았다. for ... of를 이용해서 알파벳을 하나씩 반복해주고,
if else를 이용해서 해당 알파벳이 있다면 index를, 없다면 -1를 배열로 저장하였다. 출력은 join(' ')으로 형식을 맞춰주면 된다.


Solution 2)
먼저, 결과값을 담아줄 result array를 선언하였다. 그리고
for loop의 범위로 a-z를 주었다. 'a'는 ASCII Code 97번이고, 'z'는 ASCII Code 122번이기 때문에 97-122까지 반복 실행된다.
입력된 문자열(input 변수)에 해당하는 알파벳이 있다면 그 값의 index를, 없다면 -1를 반환하여 result array에 저장한다.
마지막으로, join(' ')을 통해 출력 형식을 맞춰 주면 된다.

가장 중요한 것-1 또는 해당 index라는 키워드가 나왔을 때, indexOf를 떠올릴 수 있어야 한다.

✔ String.prototype.charCodeAt()

각 알파벳의 ASCII Code를 알아내기 위해 사용하였다.
JavaScript-helper method에서 예제를 다뤄 보겠다.

✔ String.fromCharCode()

해당 ASCII Code에 해당하는 문자를 반환한다.
indexOf안에 찾고자하는 character를 넣기 위해 사용했다.(a-z의 ASCII Code가 순서대로 들어간다)
JavaScript-helper method에서 예제를 다뤄 보겠다.

✔ String.prototype.indexOf()

입력받은 값중에 해당 알파벳이 있는지, 있다면 그 위치(index)를 반환받고, 없다면 -1을 반환받기 위해 사용하였다.
JavaScript-helper method에서 예제를 다뤄 보겠다.

Full Code

// 2nd Solution
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString();
 
const input = 'baekjoon';
const result = [];
 
for (let i = 'a'.charCodeAt(0); i <= 'z'.charCodeAt(0); i++) {
result.push(input.indexOf(String.fromCharCode(i)));
}
 
console.log(result.join(' '));
 
// 1st Solution(not so good)
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
 
// const input = ['baekjoon'];
// const checker = [
// 'a',
// 'b',
// 'c',
// 'd',
// 'e',
// 'f',
// 'g',
// 'h',
// 'i',
// 'j',
// 'k',
// 'l',
// 'm',
// 'n',
// 'o',
// 'p',
// 'q',
// 'r',
// 's',
// 't',
// 'u',
// 'v',
// 'w',
// 'x',
// 'y',
// 'z'
// ];
 
// const result = [];
 
// for (let char of checker) {
// if (input[0].includes(char)) {
// result.push(input[0].indexOf(char));
// } else {
// result.push(-1);
// }
// }
 
// console.log(result.join(' '));
728x90

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

Code

https://github.com/DasolPark/Algorithm_JavaScript/commit/78e0013ef4cd58297d7eb5ce9e55a6d8799a179a

😢 보자마자 바로 풀 수 있었다. 매우 기초적인 문제.

😊 for ... of 를 이용하여 하나씩 더해 주거나, classic for loop을 이용해서 하나씩 더해 주면 된다.

✔ for ... of

array 값을 순서대로 하나씩 가져오며, array의 길이만큼 반복해준다.

✔ 2차원 배열(Two-dementional Array)

입력값을 문자열로 가져오기 때문에 배열로 값을 지정하여 가져올 수 있다.
(e.g., input = [ '5', '54321' ]; 이라면 input[1]의 '5'는 input[1][0])

Full Code

// For Submit
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
 
// For Local Test
let input = ['5', '54321'];
let sum = 0;
 
// 1st Solution
 
for (let num of input[1]) {
sum += parseInt(num);
}
 
console.log(sum);
 
// 2nd Solution
 
// for (let i = 0; i < parseInt(input[0]); i++) {
// sum += parseInt(input[1][i]);
// }
 
// console.log(sum);
728x90

Q. 입력받은 string에서 vowels(모음 - a, e, i, o, u)가 몇 개인지 찾아내라.

--- Examples
vowels('Hi There!') --> 3
vowels('Why do you ask?') --> 4
vowels('Why?') --> 0

Code

https://github.com/DasolPark/Algorithm_DataStructure_JavaScript-Stephen-/blob/405d27e61383b84dca83ff1716f9ca74276a2a7f/exercises/vowels/index.js

😢 vowels를 손쉽게 찾도록 도와줄 includes, match를 활용하는 것이 익숙하지 않았다.

😊 Solution 1)
checker array에 모음(a, e, i, o, u)
를 미리 저장해두고, for ... of loop안에서 checker.includes()를 이용해 모음이 있다면 count를 증가시키면서 모음의 개수를 찾아냈다. for ... of는 여러모로 참 유용하다.

Solution 2)
match
helper method안에 RegExp를 삽입하여 매우 간단하게 모음을 찾아냈다.
입력받은 str에 match를 사용해주면, 만약 원하는 값이 match됐을 때, 그 값이 반환된다.
여기서 중요한 것은 RegExp에서 g를 넣어줘야 global로 끝까지 검색을 하여 match된 모든 값의 배열을 반환해주며, i를 넣어줘야 대소문자 구분없이 match를 확인해준다.

✔ Array.prototype.includes()

Array에 있는 값들 중에 includes()괄호 안에 넣어준 값을 포함하고 있나? 확인해준다.

✔ String.prototype.match()

String(문자열)에 있는 character중에 match(RegExp)괄호 안에 있는 RegExp의 조건과 매치되는 값이 있나? 확인해준다.

✔ /[aeiou]/gi

[a, e, i, o, u]중에 하나라도 있으면 체크된다.
g는 global search(한 번 매치되고 끝나지 않고, 끝까지 체크한다)
i는 case-insensitive search 대소문자 구분없이 같은 알파벳이라면 동일하게 체크된다.

Full Code

function vowels(str) {
const matches = str.match(/[aeiou]/gi);
return matches ? matches.length : 0;
}
 
// function vowels(str) {
// let count = 0;
// const checker = ['a', 'e', 'i', 'o', 'u'];
 
// for (let char of str.toLowerCase()) {
// if (checker.includes(char)) {
// count++;
// }
// }
 
// return count;
// }
728x90

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

Code

https://github.com/DasolPark/Algorithm_JavaScript/commit/2c58f2ea15236b75873c5f215996968ebc3c42e3

😢 학부에서 C나 Java를 쓸 때는 자주 사용했던 ASCII Code인데, JavaScript를 주로 사용하게되면서 오랜만에 써보았다.
아니 JavaScript에서는 처음 ASCII Code를 다뤘다.

😊 C나 Java에서는 변환명세 %d, %c 등을 통해 다뤘던 기억이 나는데,
JavaScript에서는 String.charCodeAt(index) helper method를 사용하면 된다.
그리고 4번째 줄에서 trim()도 사용하였지만, 사실 이 문제에서는 굳이 사용하지 않아도 된다.
다른 정답자들도 모두 이 방법으로 풀었다. 다른 방법이 딱히 없나보다.

✔ String.charCodeAt()

String이 담겨있는 변수에 charCodeAt(알고 싶은 index)를 이용해 사용해주면 된다.

Full Code

// For submit
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim();
 
// For Local Test
const input = 'A\n';
 
console.log(input.charCodeAt(0));
728x90

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

Code

https://github.com/DasolPark/Algorithm_JavaScript/commit/c81908a96f908c3376e82072963d96e52bcfd077

😢 문제를 보자마자 '이게 왜 정답 비율이 25%지?' 라고 생각하고 바로 풀었는데 틀렸다.
알아보니 ' '(space)만 들어오는 Test Case가 있어서 틀렸던 것이었다. 문제의 '예시 입력'에서 알려줬으면 더 좋았을 것 같다.

😊 if 조건문으로 '' 예외처리를 하였더니, 바로 정답. ' '(space)가 아니고 ''라는 것이 중요하다!
split(' ')을 사용하면, separator가 ' '(space)이기 때문에 입력값으로 ' '만 들어왔을 때 split된 array에는 [ '' ]만 들어가게 된다.
이 함정에 빠져서 다들 문제를 패스한 것 같다.

윗 줄을 Test 하기 위해 출력해보았다.


다른 풀이도 봤는데, 흠.. 조금 돌아가는 방법들이 많았다. length를 못 쓰는 경우가 없진 않을텐데..
웬만하면 다른 코드들도 참고해서 풀어보겠지만, 여기서는 개인적으로 필요성을 느끼지 못해 패스. 조금 더 생각해보자.

Full Code

// For submit
 
// const fs = require('fs');
// const input = fs
// .readFileSync('/dev/stdin')
// .toString()
// .trim()
// .split(' ');
 
// For Local Test
 
const example = 'The Curious Case of Benjamin Button\n';
// const example = ' ';
const input = example.trim().split(' ');
 
if (input[0] === '') {
console.log(0);
} else {
console.log(input.length);
}
728x90

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

Code

최종 제출 코드 https://github.com/DasolPark/Algorithm_JavaScript/blob/b9164f18301aec45680c44eeb204a6500f53bcdd/Baekjoon/1065.js
기존 제출 코드https://github.com/DasolPark/Algorithm_JavaScript/commit/95a24f7f1c0887af6d8a7e1a55e8533f0850150e

 

😢 '어떤 양의 정수 X의 자리수가 등차수열을 이룬다면'???? 지금 보면 별 것 아니지만, 처음 문제를 볼 때는 비슷한 문제를 풀어보지 못해서 그런지 이해하기 힘들었다. 문제 이해하는 것에 시간을 많이 보냈다.

😊 즉, 100미만의 수두 자릿수 또는 한 자릿수여서 등차수열을 확인할 수 없기 때문에 모두 '한수'가 된다.
그리고 세 자릿수부터 연속된 등차수열을 확인할 수 있다.
예를 들어, 우리에게 주어진 숫자 111을 백의 자리 1, 십의 자리1, 일의 자리1 하나씩 분리했다고 치자.
백의자리 1 - 십의자리 1 = 0 그리고 십의자리 1 - 일의자리 1 = 0 ( 1-1=0 === 1-1=0, true )
위처럼 연속된 두 개의 수 차이가 0으로 같다. 그렇다면 이건 한수이다.
그리고 1000은 '한수'가 아니다.

Solution 1) 기존 제출 코드
for loop안에서 100미만은 모두 한수로 count,
1000미만은 각 자릿수를 분리하여 Array에 넣고 각 자릿수 순서대로 빼주어 등차수열을 확인하였다.
만약 그 값이 한수라면 한수를 count해주었다. 그리고 1000은 한수가 아니기 때문에 else{ break; }으로 작성해주었다.

Solution 2) Other Solution
이 해결 방법은 다른 정답자의 답안을 참고하였다. 다른 방식으로 접근하였기 때문에 꼭 학습해두고 싶었다.
이 해결 방법에서는, classic for loop을 이용해서 function을 반복 호출하고 true값을 이용해 한수를 count해주었다.
특히, 세 자릿수가 들어오면 toString().split('').map을 이용해 Array로 만들어주고 값을 빼주어서 등차를 확인하였다.

Solution 3) 최종 제출 코드
Solution 2)의 개선 버전이다. for loop을 2번 사용하지 않고, function 안에서 한 번만 for loop을 사용했다.

자릿수를 다루는 문제와 직면할 때는, while을 이용하여 자릿수를 분리하거나
 문자열의 index를 이용하여 해결하곤 하는데, 항상 두 가지를 다 이용해보곤 한다.
프로그래밍은 한 가지 방법만 있지 않다는 게 가장 큰 매력인 것 같다.

Full Code

// Hansoo(category - function)
 
// 1st Solution
 
// For submit
 
// const fs = require('fs');
// const N = parseInt(fs.readFileSync('/dev/stdin').toString().trim());
 
function hansoo(N) {
const numArr = [];
let hansoo, digitCount;
let temp = 0;
 
for (let i = 1; i <= N; i++) {
if (i < 100) {
hansoo = i;
} else if (i < 1000) {
digitCount = 0;
temp = i;
while (temp > 0) {
numArr[digitCount] = temp % 10;
temp = parseInt(temp / 10);
digitCount++;
}
if (numArr[0] - numArr[1] === numArr[1] - numArr[2]) {
hansoo++;
}
} else {
break;
}
}
 
return hansoo;
}
 
// For Test
console.log(hansoo(110));
console.log(hansoo(1));
console.log(hansoo(210));
console.log(hansoo(1000));
 
// For submit
// console.log(hansoo(N));
 
// Other Solution(Solution 2)
 
// For submit
// const fs = require('fs');
// const N = parseInt(fs.readFileSync('/dev/stdin').toString().trim());
 
// For Test
// const N = 110;
 
// function findHansoo(N) {
// if (N < 100) {
// return true;
// } else {
// const numArr = N.toString()
// .split('')
// .map(num => {
// return parseInt(num);
// });
// if (numArr[0] - numArr[1] === numArr[1] - numArr[2]) {
// return true;
// }
// }
 
// return false;
// }
 
// let hansoo = 0;
// for (let i = 1; i <= N; i++) {
// if (findHansoo(i)) {
// hansoo++;
// }
// }
 
// console.log(hansoo);
 
// 2nd Solution
 
// For submit
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim();
 
// For local test
// const input = '1000';
 
// function hanCheck(num) {
// num = parseInt(num);
// let counter = 0;
// for (let i = 1; i <= num; i++) {
// if (i < 100) {
// counter++;
// } else if (i < 1000) {
// let temp = i;
// let numArr = [];
// let index = 0;
// while (temp > 0) {
// numArr[index] = temp % 10;
// temp = parseInt(temp / 10);
// index++;
// }
// if (numArr[0] - numArr[1] === numArr[1] - numArr[2]) {
// counter++;
// }
// }
// }
// console.log(counter);
// }
 
// hanCheck(input);
 
// 3rd Solution(최종 제출 코드)
 
// For submit
 
// const fs = require('fs');
// const input = fs.readFileSync('/dev/stdin').toString().trim();
 
// For local test
// const input = '110';
// const N = parseInt(input);
 
// function hanCheck(N) {
// let hansoo = 0;
// for (let i = 1; i <= N; i++) {
// if (i < 100) {
// hansoo++;
// } else {
// const numArr = i
// .toString()
// .split('')
// .map(num => parseInt(num));
// if (numArr[0] - numArr[1] === numArr[1] - numArr[2]) {
// hansoo++;
// }
// }
// }
// console.log(hansoo);
// }
 
// hanCheck(N);

+ Recent posts