본문 바로가기

■ 프로그래밍/알고리즘

[JS] Regex validate PIN code

www.codewars.com/kata/55f8a9c06c018a0d6e000132/train/javascript

 

[ 문제 ]

ATM machines allow 4 or 6 digit PIN codes and PIN codes cannot contain anything but exactly 4 digits or exactly 6 digits.

If the function is passed a valid PIN string, return true, else return false.

 

Examples:

"1234" --> true 
"12345" --> false 
"a234" --> false

 

 

[ 풀이 ]

2020.11.12 (1hour)

function validatePIN (pin) {
  const num = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
  let yes = 0;
  
  if (pin.length === 4 || pin.length === 6) {
    
    for (i in pin) {
      for (j in num) {
        
        if (pin[i] === num[j]) {
          yes++;
        }
      }
    }
    
    if (yes === 4 || yes === 6) {
        return true
      } else {
      return false
      }
  }
  
  return false
}

정규표현식을 사용하면 간단하지만, 알고리즘 풀 때 최대한 정규표현식과 데이터 타입 변환을 하지 않기로 했다. 

 

 

 

다른 사람 풀이

더보기

자바스크립트의 성질을 이용하면 더 간단한 풀이가 있다. 

function validatePIN (pin) {
  var n = pin.length;
  if( n != 4 && n != 6)
      return false;
  for (var i in pin)
      if (pin[i] > '9' || pin[i] < '0')
          return false;
  return true;
}

 

 

 

'■ 프로그래밍 > 알고리즘' 카테고리의 다른 글

[JS] Vowel Count  (0) 2020.11.14
[JS] Stop gninnipS My sdroW!  (0) 2020.11.13
[JS] Who likes it?  (0) 2020.11.11
[JS] Mumbling  (0) 2020.11.10
[JS] Is this a triangle?  (0) 2020.11.07