함수 작성:
class Solution { public int solution(int[] A); }
N개의 정수로 구성된 배열 A가 주어지고, A에 없는 가장 작은 양수 (0보다 큰)를 리턴한다.
예를들어
A[0] = 1
A[1] = 3
A[2] = 6
A[3] = 4
A[4] = 1
A[5] = 2
가 주어지면 함수는 5를 리턴해야 한다.
가정:
N 은 [1..100,000] 범위의 정수
배열 A의 각 요소는 [−2,147,483,648..2,147,483,647] 범위의 정수
복잡도:
최악의 시간복잡도는 O(N);
최악의 공간복잡도는 O(N) (입력 공간 제외)
배열의 요소들은 수정될 수 있다.
https://codility.com/demo/results/trainingR78BM7-68F/
2016년 5월 31일 화요일
2016년 5월 30일 월요일
[Algorithm] Codility Lesson 4 Counting Elements - PermCheck
정수 N개로 구성된 비어있지 않은 배열 A가 주어진다.
permutation이란 1부터 N까지 각 요소를 단 한 번만 포함하는 숫자들이다.
예를들어 배열 A가 다음과 같다면:
A[0] = 4
A[1] = 1
A[2] = 3
A[3] = 2
permutation이다. 하지만 배열 A가 다음과 같다면:
A[0] = 4
A[1] = 1
A[2] = 3
permutation이 아니다. 왜냐하면 2가 빠졌기 때문이다.
목표는 배열 A가 permutation인지 아닌지 확인하는 것이다.
함수 작성:
class Solution { public int solution(int[] A); }
배열 A가 주어지고, 배열 A가 permutation이라면 1을 리턴 아니면 0을 리턴한다.
예를들어 배열 A가 다음과 같다면
A[0] = 4
A[1] = 1
A[2] = 3
A[3] = 2
함수는 1을 리턴해야한다.
배열 A가 다음과 같다면:
A[0] = 4
A[1] = 1
A[2] = 3
함수는 0을 리턴해야한다.
가정:
N은 [1..100,000] 범위의 정수이다.
배열 A의 각 요소는 [1..1,000,000,000] 범위의 정수이다.
복잡도:
최악의 시간복잡도는 O(N);
최악의 공간복잡도는 O(N) (입력공간 제외)
입력 배열의 요소는 수정할 수 있다.
https://codility.com/demo/results/trainingWXN3W6-5WB/
permutation이란 1부터 N까지 각 요소를 단 한 번만 포함하는 숫자들이다.
예를들어 배열 A가 다음과 같다면:
A[0] = 4
A[1] = 1
A[2] = 3
A[3] = 2
permutation이다. 하지만 배열 A가 다음과 같다면:
A[0] = 4
A[1] = 1
A[2] = 3
permutation이 아니다. 왜냐하면 2가 빠졌기 때문이다.
목표는 배열 A가 permutation인지 아닌지 확인하는 것이다.
함수 작성:
class Solution { public int solution(int[] A); }
배열 A가 주어지고, 배열 A가 permutation이라면 1을 리턴 아니면 0을 리턴한다.
예를들어 배열 A가 다음과 같다면
A[0] = 4
A[1] = 1
A[2] = 3
A[3] = 2
함수는 1을 리턴해야한다.
배열 A가 다음과 같다면:
A[0] = 4
A[1] = 1
A[2] = 3
함수는 0을 리턴해야한다.
가정:
N은 [1..100,000] 범위의 정수이다.
배열 A의 각 요소는 [1..1,000,000,000] 범위의 정수이다.
복잡도:
최악의 시간복잡도는 O(N);
최악의 공간복잡도는 O(N) (입력공간 제외)
입력 배열의 요소는 수정할 수 있다.
https://codility.com/demo/results/trainingWXN3W6-5WB/
2016년 5월 29일 일요일
[Algorithm] Codility Lesson 4 Counting Elements - FrogRiverOne
작은 개구리는 강의 반대편으로 가고 싶어 한다.
개구리는 처음에 강 둑 한 곳(위치 0)에 위치해 있고 반대쪽 둑(위치 X+1)으로 가고 싶어 한다.
잎들은 나무에서 강 표면으로 떨어진다.
떨어진 잎을 표현하는 N 개의 정수로 이루어진 배열 A가 주어진다.
A[K]는 K초에 떨어지는 잎의 위치를 표시한다.
목표는 개구리가 강의 반대편으로 점프할 수 있는 가장 빠른 시간을 찾는것이다.
개구리는 1부터 X 위치 까지 강을 건너는 동안 잎이 나타날 때만 이동할 수 있다.
(우리는 잎이 있는 위치만으로 1부터 X까지 이동하는 가장 빠른 시간을 찾기 원한다는 것이다.)
강에 있는 동안의 속도는 무시할 만큼 작다고 가정할 것이다.
즉 잎은 강에 떨어진 후에 위치가 변하지 않는다.
예를 들어 정수 X = 5 이고 배열 A가 다음과 같다면
A[0] = 1
A[1] = 3
A[2] = 1
A[3] = 4
A[4] = 2
A[5] = 3
A[6] = 5
A[7] = 4
6초에 잎이 위치 5에 떨어진다.
이것이 잎이 강을 가로 지르는 모든 위치에 나타나는 가장 빠른 시간이다.
함수 작성:
class Solution { public int solution(int X, int[] A); }
N개의 정수로 구성된 비어있지 않은 배열 A와 정수X가 주어지면
개구리가 강의 반대편으로 점프할 수 있는 가장 작은 시간을 리턴한다.
만약 개구리가 강의 반대편으로 점프할 수 없다면, 함수는 -1을 리턴해야 한다.
예를들어 정수 X = 5 이고 배열 A가 다음과 같다면
A[0] = 1
A[1] = 3
A[2] = 1
A[3] = 4
A[4] = 2
A[5] = 3
A[6] = 5
A[7] = 4
위에서 설명한 것처럼 함수는 6을 리턴해야한다.
가정 :
N 과 X는 [1..100,000] 범위의 정수;
A의 모든 요소는 [1..X] 범위의 정수이다.
복잡도 :
최악의 시간복잡도는 O(N);
최악의 공간복잡도는 O(X) (입력 공간 제외)
배열의 모든 요소는 수정 가능하다.
https://codility.com/demo/results/training9GNH47-G8Z/
개구리는 처음에 강 둑 한 곳(위치 0)에 위치해 있고 반대쪽 둑(위치 X+1)으로 가고 싶어 한다.
잎들은 나무에서 강 표면으로 떨어진다.
떨어진 잎을 표현하는 N 개의 정수로 이루어진 배열 A가 주어진다.
A[K]는 K초에 떨어지는 잎의 위치를 표시한다.
목표는 개구리가 강의 반대편으로 점프할 수 있는 가장 빠른 시간을 찾는것이다.
개구리는 1부터 X 위치 까지 강을 건너는 동안 잎이 나타날 때만 이동할 수 있다.
(우리는 잎이 있는 위치만으로 1부터 X까지 이동하는 가장 빠른 시간을 찾기 원한다는 것이다.)
강에 있는 동안의 속도는 무시할 만큼 작다고 가정할 것이다.
즉 잎은 강에 떨어진 후에 위치가 변하지 않는다.
예를 들어 정수 X = 5 이고 배열 A가 다음과 같다면
A[0] = 1
A[1] = 3
A[2] = 1
A[3] = 4
A[4] = 2
A[5] = 3
A[6] = 5
A[7] = 4
6초에 잎이 위치 5에 떨어진다.
이것이 잎이 강을 가로 지르는 모든 위치에 나타나는 가장 빠른 시간이다.
함수 작성:
class Solution { public int solution(int X, int[] A); }
N개의 정수로 구성된 비어있지 않은 배열 A와 정수X가 주어지면
개구리가 강의 반대편으로 점프할 수 있는 가장 작은 시간을 리턴한다.
만약 개구리가 강의 반대편으로 점프할 수 없다면, 함수는 -1을 리턴해야 한다.
예를들어 정수 X = 5 이고 배열 A가 다음과 같다면
A[0] = 1
A[1] = 3
A[2] = 1
A[3] = 4
A[4] = 2
A[5] = 3
A[6] = 5
A[7] = 4
위에서 설명한 것처럼 함수는 6을 리턴해야한다.
가정 :
N 과 X는 [1..100,000] 범위의 정수;
A의 모든 요소는 [1..X] 범위의 정수이다.
복잡도 :
최악의 시간복잡도는 O(N);
최악의 공간복잡도는 O(X) (입력 공간 제외)
배열의 모든 요소는 수정 가능하다.
https://codility.com/demo/results/training9GNH47-G8Z/
2016년 5월 25일 수요일
[Algorithm] Codility Lesson 3 - PermMissingElem
배열 A는 N개의 각기 다른 정수로 구성된다.
배열은 [1..(N + 1)] 범위의 정수를 포함하며, 단 하나의 요소만 빠져있다. 목표는 빠진 요소를 찾는 것이다.
함수 작성 :
class Solution { public int solution(int[] A); }
배열 A를 받아서, 빠진 요소를 리턴한다.
예를 들어 배열 A 가 다음과 같다면:
A[0] = 2
A[1] = 3
A[2] = 1
A[3] = 5
함수는 빠진 요소인 4를 리턴 할 것이다.
가정 :
N은 [0..100,000] 범위의 정수;
A의 요소는 모두 다르다.
A의 각 요소는 [1..(N + 1)] 범위의 정수이다.
복잡도:
최악의 경우 시간복잡도는 O(N);
최악의 경우 공간복잡도는 O(1), 입력 받을 공간 제외
입력받은 배열의 요소는 수정될 수 있다.
https://codility.com/demo/results/trainingB3DXRP-WUF/
배열은 [1..(N + 1)] 범위의 정수를 포함하며, 단 하나의 요소만 빠져있다. 목표는 빠진 요소를 찾는 것이다.
함수 작성 :
class Solution { public int solution(int[] A); }
배열 A를 받아서, 빠진 요소를 리턴한다.
예를 들어 배열 A 가 다음과 같다면:
A[0] = 2
A[1] = 3
A[2] = 1
A[3] = 5
함수는 빠진 요소인 4를 리턴 할 것이다.
가정 :
N은 [0..100,000] 범위의 정수;
A의 요소는 모두 다르다.
A의 각 요소는 [1..(N + 1)] 범위의 정수이다.
복잡도:
최악의 경우 시간복잡도는 O(N);
최악의 경우 공간복잡도는 O(1), 입력 받을 공간 제외
입력받은 배열의 요소는 수정될 수 있다.
https://codility.com/demo/results/trainingB3DXRP-WUF/
2016년 5월 23일 월요일
[Algorithm] Codility Lesson 3 - TapeEquilibrium
비어있지 않은 배열 A는 N개의 정수로 구성되어 있다. 배열 A는 테잎의 숫자들을 나타낸다.
0 < P < N 인 정수 P는 테잎을 비어있지 않은 두 파트로 나눈다:
A[0], A[1], ..., A[P − 1], A[P], A[P + 1], ..., A[N − 1].
두 파트간의 차이 값을 구하는 식은 :
|(A[0] + A[1] + ... + A[P − 1]) − (A[P] + A[P + 1] + ... + A[N − 1])|
다시 말하면, 첫 파트의 합계와 두번째 파트의 합계 차이값의 절대값이다.
예를 들어 다음과 같은 배열 A가 있다면:
A[0] = 3
A[1] = 1
A[2] = 2
A[3] = 4
A[4] = 3
4가지 방법으로 나눌 수 있다.:
P = 1, 차이 = |3 − 10| = 7
P = 2, 차이 = |4 − 9| = 5
P = 3, 차이 = |6 − 7| = 1
P = 4, 차이 = |10 − 3| = 7
함수 작성:
int solution(int A[], int N);
N 개의 정수로 구성된 비어있지 않은 배열 A, 차이값의 최소값을 리턴한다.
예를 들어
A[0] = 3
A[1] = 1
A[2] = 2
A[3] = 4
A[4] = 3
가 주어진다면, 상술 한 바와 같이 함수는 1을 리턴하게 된다.
가정:
N 은 [2..100,000] 범위의 정수
배열의 각 요소는 [−1,000..1,000] 범위의 정수
복잡도 :
최악의 시간복잡도는 O(N)
최악의 공간복잡도는 O(N) (입력값을 위한 공간 제외)
배열의 요소는 수정 가능하다.
https://codility.com/demo/results/trainingVW44CT-URM/
0 < P < N 인 정수 P는 테잎을 비어있지 않은 두 파트로 나눈다:
A[0], A[1], ..., A[P − 1], A[P], A[P + 1], ..., A[N − 1].
두 파트간의 차이 값을 구하는 식은 :
|(A[0] + A[1] + ... + A[P − 1]) − (A[P] + A[P + 1] + ... + A[N − 1])|
다시 말하면, 첫 파트의 합계와 두번째 파트의 합계 차이값의 절대값이다.
예를 들어 다음과 같은 배열 A가 있다면:
A[0] = 3
A[1] = 1
A[2] = 2
A[3] = 4
A[4] = 3
4가지 방법으로 나눌 수 있다.:
P = 1, 차이 = |3 − 10| = 7
P = 2, 차이 = |4 − 9| = 5
P = 3, 차이 = |6 − 7| = 1
P = 4, 차이 = |10 − 3| = 7
함수 작성:
int solution(int A[], int N);
N 개의 정수로 구성된 비어있지 않은 배열 A, 차이값의 최소값을 리턴한다.
예를 들어
A[0] = 3
A[1] = 1
A[2] = 2
A[3] = 4
A[4] = 3
가 주어진다면, 상술 한 바와 같이 함수는 1을 리턴하게 된다.
가정:
N 은 [2..100,000] 범위의 정수
배열의 각 요소는 [−1,000..1,000] 범위의 정수
복잡도 :
최악의 시간복잡도는 O(N)
최악의 공간복잡도는 O(N) (입력값을 위한 공간 제외)
배열의 요소는 수정 가능하다.
https://codility.com/demo/results/trainingVW44CT-URM/
2016년 5월 20일 금요일
[Algorithm] Codility Lesson 3 - FrogJmp
작은 개구리는 길을 건너고 싶어한다. 개구리는 현재 X 위치에 있고 Y 보다 같거나 큰 위치로 이동하길 원한다. 개구리는 항상 고정된 D 거리 만큼을 점프한다.
작은 개구리가 목적을 달성할 수 있는 가장 작은 점프 횟수를 구해라.
함수는 X, Y, D 세 개의 int 파라미터가 주어지고, X에서 Y보다 같거나 큰 위치로 이동시 가장 작은 점프 횟수를 리턴하도록 작성
예를 들어
X = 10
Y = 85
D = 30
가 주어진다면 개구리가 아래처럼 이동하기 때문에 리턴은 3이다.
첫 점프 후 위치는 10 + 30 = 40
두 번째 점프 후 위치는 10 + 30 + 30 = 70
세 번째 점프 후 위치는 10 + 30 + 30 + 30 = 100
가정 :
X, Y, D 는 [1..1,000,000,000] 범위의 정수;
X ≤ Y.
복잡성 :
최악의 시간 복잡도는 O(1).
최악의 공간 복잡도는 O(1).
https://codility.com/demo/results/trainingWDWBJC-B3J/
[Bootstrap] 버튼 로딩 효과 / button loading
<button type="button" id="myButton" data-loading-text="Loading..." class="btn btn-primary" autocomplete="off">
Loading state
</button>
<script>
$('#myButton').on('click', function () {
var $btn = $(this).button('loading');
// business logic...
$btn.button('reset');
})
</script>
참고 :
http://getbootstrap.com/javascript/#buttons
라벨:
Bootstrap,
JavaScript
2016년 5월 19일 목요일
[Algorithm] Codility Lessons
Lesson 1 / Iterations
- https://codility.com/demo/results/trainingBFYF8S-38C/
Lesson 2 / Arrays
1. CyclicRotation
- https://codility.com/demo/results/training94SFQB-X5K/
2. OddOccurrencesInArray
- https://codility.com/demo/results/training8547WH-RU7/
- https://codility.com/demo/results/trainingBFYF8S-38C/
Lesson 2 / Arrays
1. CyclicRotation
- https://codility.com/demo/results/training94SFQB-X5K/
2. OddOccurrencesInArray
- https://codility.com/demo/results/training8547WH-RU7/
2016년 5월 2일 월요일
[Spring Boot] Building a RESTful Web Service 가이드
가이드에 따라 진행해보자
http://spring.io/guides/gs/rest-service/
==================================================
http://spring.io/guides/gs/sts/
Spring Tool Suite (STS) 이용하려면 위 페이지 스샷을 참고하고 마지막 프로젝트 템플릿 중 Consuming Rest 대신 Rest Service를 선택하면 된다.
선택하고 나면 두 개의 프로젝트가 생기게 되는데
gs-rest-service-initial 프로젝트는 초기화 된 상태의 프로젝트고
gs-rest-service-complete 프로젝트는 가이드를 완료한 결과 상태의 프로젝트이다.
따라서 gs-rest-service-initial 에 아래 코드를 작성하면 된다.
출력 될 데이터 형태를 정의한 Greeting.java 클래스를 작성한다.
컨트롤러인 GreetingController도 작성 한다.
마지막으로 어플리케이션을 실행할 수 있도록 해주는 Application.java 를 작성한다.
스프링을 사용해 봤다면 크게 새로운것은 없다.
필요한 항목은 모두 작성 되었고 실행은 STS 상에서 간단히 가능하다.
(프로젝트 우클릭 -> Run As -> Spring Boot App)
서버 구동 후
http://localhost:8080/greeting?name=User 접속시
완료 소스 :
http://spring.io/guides/gs/rest-service/
==================================================
http://spring.io/guides/gs/sts/
Spring Tool Suite (STS) 이용하려면 위 페이지 스샷을 참고하고 마지막 프로젝트 템플릿 중 Consuming Rest 대신 Rest Service를 선택하면 된다.
선택하고 나면 두 개의 프로젝트가 생기게 되는데
gs-rest-service-initial 프로젝트는 초기화 된 상태의 프로젝트고
gs-rest-service-complete 프로젝트는 가이드를 완료한 결과 상태의 프로젝트이다.
따라서 gs-rest-service-initial 에 아래 코드를 작성하면 된다.
출력 될 데이터 형태를 정의한 Greeting.java 클래스를 작성한다.
package hello;
public class Greeting {
private final long id;
private final String content;
public Greeting(long id, String content) {
this.id = id;
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
}
컨트롤러인 GreetingController도 작성 한다.
package hello;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}
}
마지막으로 어플리케이션을 실행할 수 있도록 해주는 Application.java 를 작성한다.
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
스프링을 사용해 봤다면 크게 새로운것은 없다.
필요한 항목은 모두 작성 되었고 실행은 STS 상에서 간단히 가능하다.
(프로젝트 우클릭 -> Run As -> Spring Boot App)
서버 구동 후
http://localhost:8080/greeting?name=User 접속시
{"id":2,"content":"Hello, User!"}
형태로 출력된다면 정상적으로 완료 된 것이다.완료 소스 :
피드 구독하기:
글 (Atom)