https://brunch.co.kr/@sunghokimnxag/5

재미로 풀어본 면접문제. 하지만 면접문제로 좋은 문제인지는 모르겠다.


var assert = require('assert')
/**
 * 1,2,3,4,5,6,[7],6,5,4,3,2,1,[0],1,2,[3]
 * n번째 숫자가 7의 배수이거나 7이란 숫자를 포함할 시에 방향을 바꾼다.
 * for loop 또는 array를 쓰지 말 것.
 * assignment 를 쓰지 말 것. 즉, 변수 할당을 하지 말 것.
 * String을 쓰지 말것. 
 * 
 */
function pingpong(max, index, value, add) {
  function direction(add) {
    if (index % 7 === 0 || /7/.test(index)) {
      return add * -1
 
    } else {
      return add
    }
  }
  if (index === max) {
    return value
 
  } else {
    return pingpong(
      max, 
      index ? index + 1 : 1, 
      value !== undefined ? value + direction(add ? add : 1) : 1,
      direction(add ? add : 1)
    ) 
  }
}
 
describe('pingpong', () => {
  it('8번째 숫자는 6', () => {
    assert.equal(pingpong(8), 6)
  })
})

'coding' 카테고리의 다른 글

완전수 구하기  (0) 2017.04.02

+ Recent posts