알고리즘(CF)2017. 6. 19. 21:54

An IP address is a numerical label assigned to each device (e.g., computer, printer) participating in a computer network that uses the Internet Protocol for communication. There are two versions of the Internet protocol, and thus two versions of addresses. One of them is the IPv4 address.

IPv4 addresses are represented in dot-decimal notation, which consists of four decimal numbers, each ranging from 0 to 255, separated by dots, e.g., 172.16.254.1.

Given a string, find out if it satisfies the IPv4 address naming rules.




Example


  • For inputString = "172.16.254.1", the output should be
    isIPv4Address(inputString) = true;

  • For inputString = "172.316.254.1", the output should be
    isIPv4Address(inputString) = false.

    316 is not in range [0, 255].

  • For inputString = ".254.255.0", the output should be
    isIPv4Address(inputString) = false.

    There is no first number.





Code


function isIPv4Address(inputString) {

   

}

'알고리즘(CF)' 카테고리의 다른 글

22. avoidObstacles  (1) 2017.06.20
20. arrayMaximalAdjacentDifference  (1) 2017.06.18
19. areEquallyStrong  (1) 2017.06.18
18. palindromeRearranging  (1) 2017.06.17
17. arrayChange  (1) 2017.06.17
Posted by EL2A
프론트엔드 언어2017. 6. 18. 21:17


1. 단순정렬


function simpleSort(arr) {

var t;


for (var i=0; i<arr.length-1; i++) {

for (var j=i+1; j<arr.length; j++) {

if (arr[i] > arr[j]) {

t = arr[i];

arr[i] = arr[j];

arr[j] = t;

} // End of if

} // End of for // j

} // End of for // i


return arr;

}


console.log(simpleSort(new Array(3,1,4,2))); // 출력 1234




2. 버블정렬 


function bubbleSort(arr) {

var t;


for (var i=0; i<arr.length; i++) {

for (var j=0; j<arr.length-1; j++) {

if (arr[j] > arr[j+1]) {

t = arr[j+1];

arr[j+1] = arr[j];

arr[j] = t;

}

} // End of for // j

} // End of for // i


return arr;

}


console.log(bubbleSort(new Array(3,1,4,2))); // 출력 1234




3. 삽입정렬


function insertionSort(arr) {

var t;


for (var i=1; i<arr.length; i++) {

t = arr[i];

for (var j=i-1; j>=0; j--) {

if (arr[j] > t) {

arr[j+1] = arr[j];

} else {

break;

} // End of if

} // End of for // j

arr[j+1] = t;

} // End of for // i


return arr;

}


console.log(insertionSort(new Array(2,6,1,9,5))); // 출력 12569




4. 퀵정렬


function quickSort(arr) {


if (arr.length < 2) {

return arr;

}


var pivot = arr[Math.floor(arr.length/2)];


var middle = arr.filter(function (data) {

return data == pivot;

});


var low = quickSort(arr.filter(function (data) {

return data < pivot;

}));


var high = quickSort(arr.filter(function (data) {

return data > pivot;

}));

return low.concat(middle).concat(high);

}


console.log(quickSort(new Array(4,8,6,5,2,1,3,9,7))); // 출력 123456789





대부분의 경우 퀵정렬이 빠르지만 모든 경우에 고속으로 정렬이 가능한 방법은 없다.

그러므로 각각 정렬의 특징을 이해한 후 가장 적절한 방법을 선택해야 한다.




'프론트엔드 언어' 카테고리의 다른 글

jQuery Mobile ajax refresh Issue  (1) 2017.03.29
함수의 호출  (0) 2017.03.24
arguments  (0) 2017.03.24
클로저  (0) 2017.03.24
값으로서의 함수와 콜백  (0) 2017.03.24
Posted by EL2A
개념정리2017. 6. 18. 20:40

프로그래밍에서 연산속도는 실수보다 정수가 더 빠르다.


그러므로 정수로 해결이 가능한 부분은 가능한 정수를 사용하는 것이 바람직하다.


만약 실수를 사용하여 연산 중 속도에 문제가 생길 경우 '실수를 100배한 정수' 를 만들어 연산한 뒤, 최종적으로 결과는 100을 나누어 표시하면 더욱 빠르다.


하지만 연산할 때 정밀도가 달라질 수 있으므로 조심해야 한다.

'개념정리' 카테고리의 다른 글

상향식접근과 하향식접근  (0) 2017.06.18
방어적 코딩 기법  (0) 2017.03.23
리팩토링  (0) 2017.03.22
호스팅과 클라우드  (0) 2017.03.22
DDNS (Dynamic Domain Name Service)  (0) 2017.03.22
Posted by EL2A