편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
69번째 줄: | 69번째 줄: | ||
여담으로, 위 취소선의 답은 의외로 간단하다. 정수가 저장되어 있는 a와 b가 있을 때, a와 b를 더한 다음 a에 저장한다. 그 다음 a에서 b를 뺀 값 을 b에 저장한다.(원래 a값이 되었다.) 그 다음 a에서 b를 뺀 값을 a에 저장하면 된다. <del>숫자가 아니고 객체면? 음료수는 더하고 빼면 섞이잖아</del> 하지만 이 방법은 [[산술 오버플로우]]의 문제 때문에 자료형이 표현 가능한 범위보다 더 적은 범위의 변수만 바꿀 수 있다. | 여담으로, 위 취소선의 답은 의외로 간단하다. 정수가 저장되어 있는 a와 b가 있을 때, a와 b를 더한 다음 a에 저장한다. 그 다음 a에서 b를 뺀 값 을 b에 저장한다.(원래 a값이 되었다.) 그 다음 a에서 b를 뺀 값을 a에 저장하면 된다. <del>숫자가 아니고 객체면? 음료수는 더하고 빼면 섞이잖아</del> 하지만 이 방법은 [[산술 오버플로우]]의 문제 때문에 자료형이 표현 가능한 범위보다 더 적은 범위의 변수만 바꿀 수 있다. | ||
사실 덧셈보다 더 빠른 방법은 XOR 회로를 사용하는법이 있다. 값이 같지 않으면 a=a^b b=a^b a=a^b를 넣어두면 정수가 아니더라도, 산술적 연산이 아니라 비트 배열 자체가 바뀌기 때문에 값이 교환된다. 하지만, 컴퓨터의 최적화 정도에 따라서 그냥 노란 컵을 이용하는 방법이 더 빠를 수도 있다. | 사실 덧셈보다 더 빠른 방법은 XOR 회로를 사용하는법이 있다. 값이 같지 않으면 a=a^b b=a^b a=a^b를 넣어두면 정수가 아니더라도, 산술적 연산이 아니라 비트 배열 자체가 바뀌기 때문에 값이 교환된다.<s>하지만 병렬 프로그래밍에서는 무리DA☆ZE★</s> 하지만, 컴퓨터의 최적화 정도에 따라서 그냥 노란 컵을 이용하는 방법이 더 빠를 수도 있다. | ||
== 왜 알아야 하나? == | == 왜 알아야 하나? == | ||
276번째 줄: | 276번째 줄: | ||
[[파일:Data stack.svg|섬네일|스택 자료구조]] | [[파일:Data stack.svg|섬네일|스택 자료구조]] | ||
먼저 들어간 자료가 나중에 나오는 자료구조. 유식한 말로 후입선출(後入先出) 구조라고 한다. 자료를 넣는 push 함수와 자료를 빼는 pop 함수를 갖는 게 정석이다. empty, full 등 다른 함수들을 가질 수 있다. | 먼저 들어간 자료가 나중에 나오는 자료구조. 유식한 말로 후입선출(後入先出) 구조라고 한다. 자료를 넣는 push 함수와 자료를 빼는 pop 함수를 갖는 게 정석이다. empty, full 등 다른 함수들을 가질 수 있다. | ||
[[C++]]의 [[STL]] | [[C++]]의 [[STL]]에서 지원한다. | ||
아래는 가장 기본적인 스택의 구현이다. | 아래는 가장 기본적인 스택의 구현이다. | ||
523번째 줄: | 523번째 줄: | ||
[[파일:6n-graf.svg|섬네일|이런 거.]] | [[파일:6n-graf.svg|섬네일|이런 거.]] | ||
함수의 그래프와는 전혀 다르다. | 함수의 그래프와는 전혀 다르다. {{ㅊ|고등학교 교육과정에서 이산수학이 빠지고 행렬도 빠짐에 따라 같이 빠지게 되는 비운의 단원}} 알고리즘을 배우다 보면 자주 나오는 구조로, 점들, 그리고 점들을 연결하는 선들만으로 이루어진 [[지도]] 비스무리한 걸 연상하면 편하다. 이때의 점을 '''정점(vertex)''', 선을 '''간선(edge)'''이라고 부른다.<ref>사실 우리가 수학에서 잘만 써먹던 대로 ‘꼭짓점’과 ‘변’이라고 하면 된다. 그거랑 정확히 똑같은 개념이다. 그런데 이상하게 이 동네에서는 ‘정점’과 ‘간선’이라는 새로운 용어를 쓴다. 이래 놓고 “수학에서 말하는 그래프랑 다르다”는 식으로 생각하는 바보도 있으니 기가 막힐 노릇이다. 그래프 이론은 엄연히 수학의 일부이다.</ref> | ||
809번째 줄: | 809번째 줄: | ||
{{YouTube|kPRA0W1kECg}} | {{YouTube|kPRA0W1kECg}} | ||
{{ㅊ|뿅뿅뿅뿅뿅}} 일단 이걸 보고 뭘 배우면 좋을지 생각해보자. 참고로 이걸 돌릴 수 있는 프로그램이 [http://panthema.net/2013/sound-of-sorting 동영상에 적힌 웹사이트]에 있다. 직접 속도조절을 해보면서 뭐가 빠른지, 어떻게 작동하는지 등등을 유심히 관찰하자. {{--|근데 영어다.}} 참고로 소리를 직접 켜야 들을 수 있다. | {{ㅊ|뿅뿅뿅뿅뿅}} 일단 이걸 보고 뭘 배우면 좋을지 생각해보자. 참고로 이걸 돌릴 수 있는 프로그램이 [http://panthema.net/2013/sound-of-sorting 동영상에 적힌 웹사이트]에 있다. 직접 속도조절을 해보면서 뭐가 빠른지, 어떻게 작동하는지 등등을 유심히 관찰하자. {{--|[[영포자도 쉽게 알 수 있는 영어|근데 영어다.]]}} 참고로 소리를 직접 켜야 들을 수 있다. | ||
영상을 보다보면 마지막의 보고(Bogo) 정렬은 결과를 보여주지 않는걸 보고 의아해 할 수도 있는데, 보고 정렬은 모든 값을 랜덤하게 줄세우는걸 반복하다보면 '''언젠가는''' 정렬이 된다는 식으로 동작하는 알고리즘이라서 그렇다(...) 알고리즘의 구성도 랜덤배치->정렬여부 확인의 무한루프. 당연하지만 효율성은 바닥을 긴다. 잘하면 한방에 정렬되지만, 영원히 정렬되지 않을 수도 있다. [[기글 하드웨어]]의 한 유저가 10개의 값으로 테스트하니 결과를 보기까지 '''4천만번'''의 읽기작업이 수행되었다고 한다.<ref>http://gigglehd.com/zbxe/10760945</ref><s>설마 이런데도 배우고 싶다고는 안하겠지?</s> | 영상을 보다보면 마지막의 보고(Bogo) 정렬은 결과를 보여주지 않는걸 보고 의아해 할 수도 있는데, 보고 정렬은 모든 값을 랜덤하게 줄세우는걸 반복하다보면 '''언젠가는''' 정렬이 된다는 식으로 동작하는 알고리즘이라서 그렇다(...) 알고리즘의 구성도 랜덤배치->정렬여부 확인의 무한루프. 당연하지만 효율성은 바닥을 긴다. 잘하면 한방에 정렬되지만, 영원히 정렬되지 않을 수도 있다. [[기글 하드웨어]]의 한 유저가 10개의 값으로 테스트하니 결과를 보기까지 '''4천만번'''의 읽기작업이 수행되었다고 한다.<ref>http://gigglehd.com/zbxe/10760945</ref><s>설마 이런데도 배우고 싶다고는 안하겠지?</s> |