2015/06 6

[Lesson 2] - 2. FrogRiverOne

문제 : 개구리가 강의 반대편으로 이동하는데 매 초마다 나뭇잎 한장이 떨어진다. 그 나무잎으로 점프해서 도착지점에 도달하는 가장 빠른 시간을 구한다.접근방법 : 도착지점인 X의 값이 5라면 가장 빨리 도착할 수 있는 시간은 5초 이상의 값이 나와야만한다. (그래야만 길이 이어지기 때문이다) 이 문제도 순열 문제같다고 판단되서 PermCheck 문제와 같은 방법으로 접근. 먼저 새로운 배열로 나무잎이 떨어지는 곳을 순차적으로 표현하고, 시간이 X값과 같거나 커질경우, 배열을 검사하여 나뭇잎이 다 연결되어있는지 확인하는 방법으로 했다. 결국 중복 for문을 사용할 수 밖에 없게 되었다. (https://codility.com/demo/results/demo6M2RXU-SWC/) 중복 for문을 이용하지 않고..

[Lesson 2] - 1. PermCheck

문제 : 배열 A가 순열인지 아닌지 판별한다.접근방법 : 배열의 길이가 4라고 하면 순열이 될 수 있는 조건은 안의 값들이 4, 3, 2, 1이 되어야한다. 그렇다면 배열의 길이가 n이라고 하면 1부터 n개의 값이 있는지만 체크하면 된다. 하지만 4, 3, 2 ,1은 순열이지만 4, 3, 3, 1 이런 값이 입력된다면 2가 빠져있기 때문에 순열이 아니다. 어차피 순열인지 아닌지 확인하기 위해서는 O(n)개 만큼 검색을 해야만 결과값을 받을 수 있다. 그래서 생각했던 것이 배열의 개수를 파악할 수 있는 배열을 새로 만들어서 그 값의 카운트를 비교하여 처리하는 방식을 생각했다. 처음에 배열의 길이만큼 초기화를 시켜줘야한다는 비용이 부담되는 문제가 있었지만, 그정도 속도는 큰 문제는 안되었던 것 같다. 그리고..

[Lesson 1] - 3. TapeEquilibrium

문제 : |(A[0] + ... + A[P-1]) - (A[P] + ... + A[N-1])|의 최소값 구하기!접근방법 : 처음에 for문 여러번 돌렸다가 피를 본 후... 다르게 생각하기 위해서 노력했는데, 전체 합계를 먼저 계산한 후, 그 계산된 값에서 현재까지 누적된 P의 값을 뺀 값이 가장 최소값인지 비교한 후 저장하는 방식으로 해결했다.사용언어 : Javascript소스 :12345678910111213141516171819202122232425// you can use console.log for debugging purposes, i.e. // console.log('this is a debug message'); function solution(A) { // write your code i..

[Lesson 1] - 2. PermMissingElem

문제 : 주어진 배열에서 빠진 값 구하기접근방법 : 새로운 배열을 만든 후 0으로 초기화 시킨 후, 주어진 배열의 값에 해당하는 index에 값을 증가시킨 후, indexOf를 통해 0인 값을 조회해서 찾아낸다.사용언어 : Javascript소스 :1234567891011121314// you can use console.log for debugging purposes, i.e. // console.log('this is a debug message'); function solution(A) { // write your code in JavaScript (Node.js 0.12) var a = []; for (var i = 0; i < A.length +1 ; i++) { a[i] = 0; } for (..

[Lesson 1] - 1. FrogJmp

문제 : 개구리가 X-->Y로 가는 점프(D)를 이용하여 최소 점프 횟수 구하기접근방법 : 처음 위치의 값(X)을 제외한 Y위치를 구한 후 점프거리로 나눈 몫을 올림하여 횟수 계산 (10, 71, 30) --> (71-10) / 30 = 2.03 => 3사용언어 : Javascript소스 :1234567// you can use console.log for debugging purposes, i.e. // console.log('this is a debug message'); function solution(X, Y, D) { // write your code in JavaScript (Node.js 0.12) return Math.ceil((Y-X)/D); 득점 :