본문 바로가기

# 미사용

(138)
# 미사용 재귀 이 블로그의 모든 예제코드는 깃허브에서도 볼 수 있습니다. https://github.com/AeroCodeX/ 재귀 알고리즘(Iterative)의 개념하나의 큰 문제를 똑같은 형태를 갖는 여러개의 부분문제로 나누어 푸는 것.sum(n) // 1부터 n까지의 합. sum(10) = 10 + sum(9);sum(9) = 9 + sum(8);...sum(n) = n + sum(n-1);또 다른 자신이 구했던 이전 값을 활용하여 정답을 계산하며,비순차적으로 계산이 이루어지는 방식. 여기서 순차적이란 용어는 처음부터 정답까지 모든 경우를 차례대로 계산한다는 의미로 사용되었다.N=10인 경우의 정답을 구하기 위해 N=0, .. ,9인 경우의 정답까지 전부 구해놓는다는 의미이다.N=10와 전혀 상관없는 케이스의 정..

2018. 11. 11. 07:06

# 미사용 순회 이 블로그의 모든 예제코드는 깃허브에서도 볼 수 있습니다. https://github.com/AeroCodeX/ 순회 알고리즘(Iterative)의 개념자신이 직접 구했던 이전 값을 기반으로 정답을 계산하며.순차적으로 계산이 이루어지는 방식. 여기서 순차적이란 용어는 처음부터 정답까지 모든 경우를 차례대로 계산한다는 의미로 사용되었다.N=10인 경우의 정답을 구하기 위해 N=0, .. ,9인 경우의 정답까지 전부 구해놓는다는 의미이다.N=10와 전혀 상관없는 케이스의 정답도 전부 구해놓는다. 또한 각 케이스의 결과는 순차적으로 구해지나, 중간결과로써 병렬적으로 계산될 수 있다.N=0의 결과가 N=1, ..., N 을 계산하는데 필요하다면, 각 공간에 중간값으로써 저장해놓는 것 이다. 아래는 순차적으로 구..

2018. 11. 11. 06:53

# 미사용 무차별 대입 이 블로그의 모든 예제코드는 깃허브에서도 볼 수 있습니다. https://github.com/AeroCodeX/ 부르트 포스(Brute Force) 개념가능한 모든 경우의 수를 검사하는 것.많은 자원을 소모하지만 가장 확실한 방법이고,무엇보다 다른 사람이 이해하기 쉬운 코드를 만들어낸다. 러닝타임은 꽤 걸리겠지만, 구현하기 쉽고. 이해하기 쉽다. 점진적 성능향상을 이용한 알고리즘 풀이순진하게 부르트 포스를 적용했다간, 굉장히 높은 확률로 시간제한에 걸린다.확실하게 답이 아닌 영역을 배제함으로써 성능을 향상시켜야 한다. 다음은 부르트-포스의 중요한 특징이다.첫 아이디어가 굉장히 단순하다. (구현하기 쉽다.)조금씩 성능을 개선해나갈 수 있다. 충분히 성능을 개선해나가면, 부르트-포스로도 빠른 문제풀이가 가능..

2018. 11. 11. 05:57

# 미사용 [백준 1011] Fly me to the Alpha Centauri 통찰노트 이 블로그의 모든 예제코드는 깃허브에서도 볼 수 있습니다. https://github.com/AeroCodeX/ Fly me to the Alpha Centauri문제를 대충 요약하면, 다음 조건을 갖는 최적화 문제와 같다. 워프거리는 위의 점화식을 만족해야 하고, 출발할때는 1로 출발해야 하며, 도착할때도 1로 도착해야 한다. 다만, 최소횟수로 워프해야 한다. 조건 (1, 2, 4)에 의해 속력은 출발점에서 우쪽으로 선형 증가하며, 조건 (1, 3, 4)에 의해 속력은 도착점에서 좌측으로 선형 증가하고, 조건 (1)에 의해 그래프는 연속이어야 한다. 즉, 위의 조건을 모두 만족하는 그래프는 다음과 같은 형태일 것 이다. 아래는 짝수 횟수로 최대 워프할 때의 그래프. 아래는 홀수 횟수로 최대 워프할 때의..

2018. 10. 22. 03:45

티스토리 깃허브 연동하기 보호되어 있는 글입니다.
# 미사용 Fetch And Add(FAA) 명령어 Fetch And AddFetch And Add (FAA) 명령어는 락을 사용하지 않는 기본 원자함수이며(CPU 레벨에서 지원한다.), 추출과 덧셈 연산을 원자성을 가지고 수행한다. 행동 정보이전 값을 반환하고,주어진 값 만큼 더한다. 인자 정보value : 더해지는 변수.n : 더해질 값. 반환 정보더해지기 이전의 값. (덧셈 명령도 동시에 일어남.) 기본적인 구현은 다음과 같으며, 매커니즘을 설명하기 위한 것 뿐이지 실제로 적용가능한 함수는 아니다. 위의 동작은 후위 연산자 n++ 와 같다. Usage이 함수는 공유자원의 덧셈이 원자성을 가져야 할 때 사용된다. 가장 간단한 예로는 카운터가 있다. C++11 Standardfetch_add 함수는 C++11에서 추가되었으며, 원자계 프리미티브 타입인 ..

2018. 10. 15. 16:07

# 미사용 Compare And Exchange(CAS) 명령어 Compare And Exchange (CAS)Compare And Exchange (CAE) 명령어는 락을 사용하지 않는 기본 원자함수이며(CPU 레벨에서 지원한다.), 비교와 교환을 원자성을 가지고 수행한다. Compare And Swap (CAS) 라는 이름으로도 불린다. 행동 정보서로다른 두 값을 비교하고,두 값이 같다면 새로운 값으로 덮어쓴다. 인자 정보current : 현재 값old : 현재 값 이라고 예상되는 값. (다른 쓰레드에 의해 다른 값으로 갱신 되었을 수 있다.)newVal : current == old 이면 새롭게 current 에 대입될 값. 반환 정보true : current == old 일 때, ( current = newVal 명령도 동시에 일어남. )false : curr..

2018. 10. 14. 17:21

# 미사용 Test And Set(TAS) 명령어 Test And Set Test And Set 명령어는 락을 사용하지 않는 기본적인 원자함수이며, 여느 원자함수가 그렇듯이 CPU 레벨에서 지원한다. 검사와 지정을 원자성을 가지고 수행한다. bool test_and_set(bool& flag); 동작 내용 주어진 불리언 값의 현재 값을 반환하고, 그 불리언 값을 true 로 덮어쓴다. 반환 정보 true : 플래그가 원래 true 일 때. false : 플래그가 원래 false 일 때. ( flag = true 명령도 동시에 일어남) 구현 기본 구현 기본적인 구현은 다음과 같으며, 매커니즘을 설명하기 위한 것 뿐이지 실제로 적용가능한 함수는 아니다. 중간에 문맥교환이 발생할 수 있기 때문이다. 아래는 간략한 상태도이다. 한번 세트된 플래그는 계속해서 t..

2018. 10. 12. 02:13