[카카오] 3차 코딩 테스트 문제1(N진수 게임) 풀이 using Javascript

나는 아직 코딩 테스트를 한 번도 격어보지 못했다. 그래서 최근 공개된 카카오의 신입 공채 문제를 풀어보기로 했다. 그 첫번쨰 문제는 다음과 같다. 문제1. N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, … 열 번째 사람은 9를 말한다. 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다. 입력 형식 진법 n, 미리 구할 숫자의 갯수 t, 게임에 참가하는 인원 m, 튜브의 순서 p 가 주어진다. 2 ≦ n ≦ 16 0 < t ≦ 1000 2 ≦ m ≦ 100 1 ≦ p ≦ m 출력 형식 튜브가 말해야 하는 숫자  t 개를 공백 없이 차례대로 나타낸 문자열. 단,  10 ~ 15 는 각각 대문자  A ~ F 로 출력한다. 보다 자세한 문제 설명은 아래 카카오 공식 블로그 링크에서 확인할 수 있다. http://tech.kakao.com/2017/11/14/kakao-blind-recruitment-round-3/ 문제 풀이 내가 생각했을 때 이 문제의 키워드는 진법 변환, 반복문 정도다.  먼저 이 문제에서 반복문이 시행되어야 하는 횟수는 미리 구할 숫자의 갯수(t) * 게임에 참가하는 인원(m)으로 나타낸다. 다음으로 진법 변환을 먼저 살펴보자. Javascript에서는 아래와 같은 방법으로 원하는 진법으로 숫자를 변경 할 수 있다. (3).toString(2); //11 위와 같은 방법으로 진법을 변경한 숫자의 글자수만큼 다시 loop를 진행 해 튜브의 순서가 되면 output에 해당 문자열을 추가해준다. 최종...

[Javascript, ECMAScript] float(실수) 연산 오류 원인과 해결 방법

Javascript에서 float(실수) 연산을 수행하다 보면 원치않는 결과가 발생하는 경우가 있다. 예를 들어 아래와 같은 연산을 수행하는 경우 0.3이라는 결과를 기대하지만, 실제로는 0.30000000000000004라는 값이 표시된다. console.log(0.1 + 0.2); //0.30000000000000004 이러한 오류가 발생하는 이유는 Javascript(ECMAScript)가 IEEE-754 를 표준으로 사용하고 있기 때문이다. IEEE-754는 컴퓨터에서 부동소수점을 표시하는 방법을 정하는 표준이다. 사실 위와같은 결과가 나오는 것은 표준을 따르고 있는 것이기 때문에 정상 작동하고 있는 것이지만... 우리가 원하는 결과는 0.3이므로 수정이 필요하다. 아래와 같이 parseFloat() 와 toFixed() 메서드를 이용해 해결 할 수 있다. console.log(0.1 + 0.2); //0.30000000000000004 const num1 = parseFloat(0.1); const num2 = parseFloat(0.2); console.log((num1 + num2).toFixed(2)); //0.3 toFixed() 메서드의 인자값은 소수 몇째 자리까지 표시할 것인지를 지정한다.

[Javascript] destructure에 대해서 알아보자

ES2015(ES6)에 추가된 문법으로 배열이나 객체를 쪼개서..? 사용할 수 있다. 자세한 사용 방법은 아래 링크 참조할것 http://beomy.tistory.com/18

[AngularJS] ng-repeat(ngRepeat) directive 사용법 정리

ng-repeat directive는 배열에 저장된 item을 반복해서 보여줄 수 있다. 일종의 loop라고 생각하면 편할 것 같다. 아래는 AngularJS in Action 도서 에 나오는 간단한 활용 예제이다. 보다 자세한 활용 예제는 여기서 확인할 수 있다. app.js myModule.controller('MainCtrl', function(){ var main = this; main.stories = [ { title: '1st story', description: 'the first user story', criteria: '요구사항 정리중...', status: 'To Do', type: '기능', reporter: '웹지니', assignee: '웹지니' }, { title: '2nd story', description: 'the second user story', criteria: '요구사항 정리중...', status: 'Back Log', type: '기능', reporter: '웹지니', assignee: '웹지니' }, { title: '3rd story', description: 'the third user story', criteria: '요구사항 정리중...', status: 'Code Review', type: '개선', reporter: '웹지니', assignee: '웹지니' } ]; }); index.html <div ng-controller...

Visual Studio 2010 sp 설치 오류 시 대처 방법

http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&detail=1&pageno=0&wid=1028&rssMode=1&wtype=0 위 링크에서 확인할 수 있다.

[ASP] ASP에서 PHP의 substr_count 기능 구현하기

PHP의 substr_count 는 문자열 중 찾는 문자열이 몇번이나 들어있는지 검사해주는 함수이다. 자세한 설명은 링크 참고 :   http://php.net/manual/en/function.substr-count.php 이 기능을 ASP에서 구현하고자 한다면 아래처럼 사용하면 된다. cont = "This is a test" tmp = split(cont, "is") count = ubound(tmp)

[도서] 소소한 풍경 / 박범신 - 서로 사랑한 한 여자와 한 남자 그리고 또 다른 여자!

소소한 풍경 / 박범신 / 자음과 모음 며칠 전 회사에서 박범신 작가 특강을 운영했다.  영화 은교  로만 알고 있었던 박범신 작가를 직접 보고나니 그의 책. 영화 은교를 무척 재밌게 봤기 때문에 이 책도 기대하며 책을 펼쳤다.  그러나, 처음부터 책의 구성이 나해했다. 이름이 아닌 ㄱ, ㄴ, ㄷ, 남자1 등으로 불리는 등장 인물들도 그렇고 문체 자체도 내가 평소에 접하지 못했던 톤이었다. 특강 당시 박범신 작가가 나의 주요 독자는 4, 50대라고 했던 말이 떠올랐다. 아직 나는 박범신 작가의 생각을 따라가기엔 너무 어린건지, 아니면 평소 책을 잘 안 읽어서 소화를 못하는건지 모르겠다.. ㅎㅎ ;; 책의 전반적인 내용은 이렇다. 소소라는 지역에서 사는 ㄱ은 어느 날 발견한 '물구나무 서기를 하는 사람'인 ㄴ을 집에 들이게 된다. 그리고 약 한달 후, 오갈 곳 없는 ㄷ 또한 동거를 시작한다. ㄱ, ㄴ 그리고 ㄷ은 각자의 가시(나는 이 책에서 등장하는 가시를 상처, 자기 방어 쯤으로 이해했다.)를 가지고 있다.  셋은 같이 동거하며 덩어리진다.  그러던 중 ㄴ은 우물을 파기 시작하고, 우물이 완성된 날 사고인지 ㄷ의 살인인지 모를 사건으로 인해 죽게된다. 이 책의 전개 방식에는 특이한 점이 있는데, 바로 각 챕터마다 시점이 바뀐다는 것이다.  이 책은 교수-ㄱ-ㄴ-ㄱ순으로 1인칭 주인공 시점을 통해  이야기를 풀어나간다.  이러한 전개 방식을 통해 각 인물별로 같은 상황을 어떻게 생각하는지 풀어주었다. (이런 전개 방식을 보면서 몇달 전 봤던 비긴 어게인begin again  영화 내용 중 남주와 여주가 처음 만났을 때 장면이 떠올랐다. ) 등장인물 ㄱ, ㄴ, ㄷ을 대략 소개하면 이렇다. ㄱ은  30대 여성이며, 어렸을 적 오빠와 부모님을 차례대로 잃는다. 또한 대학생 때 만난 남자1과 결혼하지만, 결혼은 실패로 돌아가게 된다. 결국 ㄱ은 고향...