파이썬에 in 연산자의 시간복잡도는 얼마일까?
1. Introduction 파이썬에서 in 연산자는 검색이나 순회에 사용된다. 순회는 항상 전체를 순회하니까 효율의 개선이 필요하다고 느껴지 않지만, 검색은 그렇지 않다. 이번 포스트에서는 in의 검색 효율이 자료구조..
키자드에 등록된 총 202개의 포스트를 확인하실 수 있습니다.
1. Introduction 파이썬에서 in 연산자는 검색이나 순회에 사용된다. 순회는 항상 전체를 순회하니까 효율의 개선이 필요하다고 느껴지 않지만, 검색은 그렇지 않다. 이번 포스트에서는 in의 검색 효율이 자료구조..
1. Question 2. Approach 당연히 문제보자마자, 영어 자리수와 숫자 자리수가 같다는 걸 보고 답은 100% 영어랑 관련있다고 생각. 나머지랑 획 수 등등 여러가지로 생각해보았으나, 답이 안나옴. GG 해법은 영어..
1. Question 2. Approach 대놓고 이름이 힌트. 움우르 즈엉 -> 우물 정(井) 마치 sharp(#)표시와도 비슷한 우물 정 글자는 암호의 각 부분을 전부 포함한다. 키보드의 키 배열이 $$\begin{matrix} 7&8&9 \\ 4&5&6..
1. Question 정수 K (1 ≤ K ≤ 100,000)가 주어진다. 이때, K보다 크거나 같은 서로 다른 소수의 곱 중에서 가장 작은 곱을 찾는 프로그램을 작성하시오. 1.1 Input 첫째 줄에 테스트 케이스의 개수 T (1 ≤ T..
1. Question 2. Approach 4각형 분할 문제다. 이 문제의 핵심은 칸을 채울 수 있는 숫자가 적은 칸부터 공략해나가는 것이 핵심이다. 먼저 가장 첫 칸을 살펴보자. 0, 0을 채울 수 있는 숫자는 체크 표시한 3개..
1. Introduction 베르트랑 역설을 통해, 우리는 라플라스가 정의한 확률의 고전적 정의에 문제가 있음을 알게되었다. 이번 포스트에서는 확률의 공리적 정의를 통해 확률을 정의하는 방법을 탐구한다. 2. Approach..
1. Question 2. Approach 조건이 있는 작도 문제이다. 언뜻보기에는 시계에 있는 숫자를 통해서 ${360 \over 11}^\circ$를 작도할 수 있을 듯하나, 피자를 자르는 것이기 때문에 시계의 숫자를 통해서 11이란 숫..
1. Question 2. Approach 굉장히 난해했으나 답은 간단해서 충격적이었던 문제. 자기 모자 색깔을 모르는 상태에서 빨간 모자 그룹과 파란 모자 그룹을 선택할 수 있어야한다. 정답은 위와 같이 빨간 모자 그룹..
1. Question 2. Approach 날짜 수가 적은 2월에 3개이고 31일로 끝나는 1월과 3월이 5, 6개인 것으로 보아. 무조건 날짜와 관련있다고 까지는 생각했으나, 결국 답으로 연결되지는 못하고 GG. 답은 역시 날짜와..
1. Question 2. Approach 이전 포스트와 같이 난해한 문제이다. 구글 입사시험 문제였다고 한다. 둘씩 짝지어서 1명은 상대방의 모자 색깔을 부른다는 방법이 있다. 이 방법은 1명은 자신의 모자색깔을 불러줬기..
1. Question 2. Approach 대문자를 기준으로 Iamon Ear Pad 이렇게 나눠봤지만 크게 느낌이 오는 것은 없었다. 올바른 접근법은 트럼프의 문양. Diamond Heart Spade Clover 따라서, 답은 Love이다.
1. Question 2. Approach 은근 해볼만 했던문제. 실제로 곱해보니 쉽게 답이 나왔다. $11^2 = 121$ $22^2 = 484$ $33^2 = 1089$ $44^2 = 1936$ 곱의 결과의 각 자리수 합이 연산의 결과로 나온다. 따라서, 답은 19
1. Question 2. Approach 적당한 난이도의 문제. 일단 10을 어떻게 분할해도 홀수 3개는 만들 수 없다 (홀수 3개의 합은 다시 홀수). 따라서, 몇개의 구슬을 중복 시키거나 빼버려야 된다. 구슬을 빼는 것은 너무..
1. Question 돈을 더 놓지 않고 이미지의 100원만 움직여서 가로, 세로가 모두 700원이 되게하라. 2. Approach 옛날부터 유명한 고전 창의력 퀴즈. 답은 상하좌우 끝에 100씩 총 400원을 중앙에 100원 위에 쌓는것.
1. Question 2. Approach 비슷한 문제로 1개의 그룹에서 1개 또는 2개 또는 3개의 바둑알을 가져가는 문제가 일반적으로 알려져있다. 그 문제의 변형인데, 이런 식의 문제는 상대에게 가불기를 시전하면 된다. 위..
1. Question 2. Approach 굉장히 어려웠다. 100% 종이 접는거라고 생각했는데, 별 방법 없어서 실패ㅋㅋㅋ 답이 진짜 씽크빅이다. 이렇게 선에 두께감을 줘서 바를 정자를 만들어 내더라 ㄷㄷㄷ
1. Question 2. Approach 처음에 시계로 접근했다가 박살나고 약수 같은걸로 뭔가 안되겠나 했는데 안되더라. 하석진의 한자풀이로 접근했다. 답이 굉장히 괜찮다고 생각했는데 오답이란다. 이것보다 좋은 답이..
1. Question 2. Approach 의외로 간단했다. 수가 전부 짝수라서 소수로 접근했는데, 1을 제외하고 ? - 1 - 4 - 5 - 9 - 2 더라. 따라서 답은 6.
1. Question 2. Approach 6개의 9로 100을 만드는 전형적인 연산기호 때려넣기 문제다. 나는 10을 2개 만들면 되겠다 생각해서, 9를 세 번 사용하여 10을 만드는 방법을 찾기로 했다. (9/9) + 9하니까 되더라. 따..
1. Question 지민이는 천장을 보다가 직사각형 격자판을 생각했고, 각 칸에 숫자를 한 자리씩 적어 놓았다. 수업시간이 너무 지루해서 지민이는 행의 숫자가 등차수열이고, 열의 숫자도 등차수열을 이루는 서로 다..
1. Question 어떤 수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min과 max를 포함한 사이에 제곱ㄴㄴ수가 몇 개 있는지 출력한다...
1. Question “반갑다. 내 이름은 반고흐#31555! 조선 최고의 활잡이지. 오늘도 난 금강산 위에서 적들을 노리고 있지. 내 앞에 있는 적들이라면 누구도 놓치지 않아! 좋아, 이제 곧 월식이 시작되는군. 월식이 시..
본격적으로 들어가기 전에 적당히 알고 가야할 것 들과 배경지식에 대해 간략하게 설명. 소프트웨어란? - 쉽게 말해, 문서화된 컴퓨터 프로그램 Software Product - 일반적인 대중을 대상으로 만들어질..
1. Question 시작 -> 실행 -> cmd를 쳐보자. 검정 화면이 눈에 보인다. 여기서 dir이라고 치면 그 디렉토리에 있는 서브디렉토리와 파일이 모두 나온다. 이때 원하는 파일을 찾으려면 다음과 같이 하면 된다. dir..
1. Question 지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 한다. 지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있다. 첫 번째..
1. Question 어린 왕자는 소혹성 B-664에서 자신이 사랑하는 한 송이 장미를 위해 살아간다. 어느 날 장미가 위험에 빠지게 된 것을 알게 된 어린 왕자는, 장미를 구하기 위해 은하수를 따라 긴 여행을 하기 시작..
1. Introduction 소수는 1과 자기 자신외에는 약수를 가지지 않는 수를 의미한다. 소수를 판별하는 가장 간단한 방법은 2부터 자기자신까지의 수 (효율적으로는 $\sqrt {n}$까지)를 차례로 나눠보는 것이다. 하지..
1. Introduction 호제법은 유클리드의 저서 원론에 적혀있는, 인류 최초의 알고리즘이다. 두 수의 최대공약수를 구하는 방법으로, 정의는 다음과 같다. 두 양의 정수 $a, b (a > b)$에 대하여 $gcd(a, b) = gcd(b,..
1. Question 어떤 두 자연수에 공통인 약수들 중에서 가장 큰 수를 최대공약수라고 하고, 두 자연수의 공통인 배수들 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 두 자연수 12와 90의 최대공약수는 6..
1. Introduction 이번 포스팅에서는 호제법보다 빠른 최대공약수 식별 알고리즘을 소개한다. 스테인 알고리즘 (Stein's algorithm) 이라고도 불리는 알고리즘이며, 기존의 호제법보다 60%의 효율개선을 보이는 획..
1. Question 컴공에게는 익숙해보이는 문제. 2. Approach 컴퓨터 공학의 알고리즘 중, 외부 정렬 (External Sort)이 유사한 환경으로 보인다. 먼저, 말이 겹치지 않게 5마리씩 25마리가 경주를 한다. Round1 Roun..
1. Question 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자...
1. Question 재원이는 한 도시의 시장이 되었다. 이 도시에는 도시를 동쪽과 서쪽으로 나누는 큰 강이 흐르고 있다. 하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를..
1. Question 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M*N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보드를 잘라서..
1. Question 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가..
1. Question 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대를..
1. Question 양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오. 1.1 Input 첫째 줄에 N의 진짜 약수..
1. Introduction 정수론과 암호학을 공부하다보면, 매우 큰 수에 대해 나머지를 알아야 하는 경우가 생긴다. 그 수가 소인수분해가 된다면 나머지를 얻어내는데 큰 어려움이 없겠지만, 그렇지 않다면 그 수를 $N =..
1. Introduction $a^b \bmod m$형태를 계산하는 방법은 여기에 포스팅했다. 이번 포스팅에서는 이것을 돌리기 위한 코드를 최적화하는 방법을 소개한다. 2. Approach $a^b$의 형태의 자연수에 대한 나머지 계산에..
1. Question 재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이..
1. Introduction 이 포스트에서는 베르트랑의 역설을 통하여, 확률의 고전적 정의가 가지는 한계를 알아본다. 1.1 확률의 고전적 정의 중학교 때 (현재 교육과정에서는 어떤 지 모르겠다) 필자는 "어떤 사건의 확..
1. Introduction 우리나라의 수학교과 과정에서 근의 공식을 암기하는 것은 필수적이다 (공식 자체보다 유도하는 과정이 더 중요함에도 불구하고). 학생들이 처음 경험하는 난잡한 모양의 공식에도 불구하고, 판별..
1. Question 아래 금고는 모든 버튼을 정해진 순서대로 한 번씩만 눌러야 열린다. 단, 마지막으로 누르는 버튼은 반드시 F여야 한다. 버튼에 적힌 숫자와 문자는 이동하는 칸의 수와 방향을 의미한다. 즉, 1U는 위..
1. Question 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은..
1. Question fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다. fibonacci(2)는 fibonacci(1) (두 번째 호출)과 fibonacci(0)을..
1. Question 참/거짓의 개수도 정해져 있지 않고 10개의 문장이 의미하는 숫자를 찾아야하는 보기만 해도 괴로운 문제. 2. Approach 일단 10개의 문장 중에서 정확하게 숫자를 지명하는 명제 5, 8은 모두 거짓일..
1. Question 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적..
1. Question 조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승환의 사진이다. 이석원은 조규현과 백승환에게 상대편 마린(류재명)의..
1. Question 한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. 1.1 Inp..
Advanced 1. Movie studio Mega Pictures is threatening to sever ties with Pine Province. Provincial legislators are currently working on a bill that would allow businesses to refuse services to certa..
1. Introduction Pytorch는 페이스북이 구글의 Tensorflow에 맞서기 위해 개발한 딥러닝 프레임워크이다. 개발 과정에 엔비디아가 참여해서 그런지, 크게 밀어주고 있다고 한다. Pytorch는 딥러닝 프레임워크의 후..
1. Introduction 텐서(Tensor)는 연산을 용이하게 하기 위해, 벡터를 모아둔 단위라고 정의하기는 하지만, 컴퓨터 공학에서는 사실상 3차원 행렬로 통용된다. 물론, 3차원 행렬, 2차원 텐서라고 사용되기도 하지만..
1. Introduction 이 포스는 딥 러닝을 이해하기 위한 다음과 같은 배경지식을 소개한다. 딥 러닝에서 사용하는 데이터 셋의 형태 (Dataset) 가정 (Hypothesis) 비용함수 (or 손실함수, Cost Function or Loss Func..
상대론적 운동량에 의하면, 운동하고 있는 물체의 질량 $m_v$는 다음과 같이 표현된다. $$m_v = {m_0 \over \sqrt {1 - \left( \frac{v}{c} \right)^2}}$$ 또한, $f(x) = {1 \over \sqrt {1 - x^2}}$는 테일러..
1. Conditions 집합 $G$와 이항연산 $*$에 대해, 다음과 같은 조건들이 있다. $G$가 $*$에 대해 닫혀있음. 즉, $*: G \times G \to G$ 결합법칙 (Association Law)이 성립. 즉, 임의의 $a, b, c \in G$에 대해, $(..
1. Indentity 집합 $G$와 이항연산 $*$, $*$의 항등원 $e$에 대해, $e$와 다른 항등원 $e'$이 있다고 가정하자. 항등원의 정의에 따라, $e = e * e' = e'$ 이다. 이는 가정에 모순이므로, 항등원은 유일하다. 2. I..
윈도우 10의 작업 표시줄 오른쪽 끝에는 아래 이미지와 같이 날짜 및 시간이 표시되어 있다. 하지만 날짜 정보에 요일은 나오지 않는데, 대부분은 그냥 날짜를 클릭해서 캘랜더를 띄워 확인한다. 그런데, 여러분..
1. Introduction 사카린은 설탕 대신 쓰이는 단맛을 내는 화학조미료이다. 2. Invention 사카린은 19세기 말 독일의 화학자 콘스탄틴 팔베르그에 의해 발견되었다. 아이라 렘슨(교수): 석유 에테르 결정의 산화..
1. Introduction 유클리드 (Euclid)의 저서인 'Elements of Geometry (원론)'에 등장하는 다섯 공리이다. 해당 공리는 다음과 같다. 서로 다른 두 점이 주어졌을때, 그 두 점을 잇는 선분을 그을 수 있다. 임의..
1. Introduction 맥주같은 병의 뚜껑을 보면 마치 거꾸로된 왕관 같이 생겼다. 영어로도 "Crown cap, Crown cork"이라고 하는데 병뚜껑은 왜 왕관같이 생겼을까? 2. Invention 병뚜껑은 발명가..
1. apprehend: 체포하다. e.g. The police failed to apprehend the culprit. (경찰은 범인을 잡는데 실패했다.) 2. bond: 보석금 e.g. He was released on $5,000 bond. (그는 5000달러의 보석금을 내고 풀려났다..
Part 1~2 텝스에서는 자연스러운 응답보다, 의도에 답하는 것이 먼저임. fluster: 닥달해서 초조하게 만들다. chew out: 호되게 꾸짖다. slip up: 실패하다. = fail conscript: 징집하다. sign sb up: sb를 등록하..
1. pursue: 추구하다, 뒤쫓다 e.g. to pursue a goal (목표를 추구하다.) 2. proclaim: 선언하다. e.g. The president procalimed a state of emergency. (대통령이 국가 비상사태를 선언했다.) 3. objection: 이..
Vocabulary 1. Yes, just (?) walking along this street. Opt: a) pass b) hold c) keep d) move Ans: 더보기 답은 c) 2. No, you have to (?) planes in London. Opt: a) alter b) trade c) extend d) transfer..
Basic 1. No. I'll have to take it to the service center to get it (?) Opt: a) repairing b) to repair c) repaired d) repair Ans: 더보기 답은 c). 5형식 get의 목적보어 형태를 묻는 문제. 목적어의 능수동..
1. No, I (?) her this morning. Opt: a) bathe b) bathed c) have bathed d) had bathed Ans: 더보기 답은 b). 2. No, It's (?) close. We can walk there in five minites. Opt: a) merely b) only c) rather d)..
rent out : ~을 임대하다. renovate : 개조하다, 보수하다. under the weather: 몸이 안 좋은 lose one's touch: 기량이 떨어지다. face the music: 벌을 받다. twist a person's arm: 강제하다. 무리한 일을 시키..
attainment: 성과 critical acclaim: 비평가의 절찬 distracted: 산만해진 counter: 반박하다. correspond: 부합하다, ~에 해당하다, ~와 서신을 주고 받다. revamp: 개조하다. resent: 분개하다. commute: 통근하..
Talk to/with Speak to/with Graduate from Wait for Interfere with Rely on Count on Consent to Apologize to Refer to Sympathize with Compensate for conform to Succed in Deal with Object to
1. Really? I don't like (?) kinds of armatic foods Opt: a) this b) that c) those d) its Ans: 더보기 답은 c). 2. She certainly is. I'm amazed (?) her accuracy and control. Opt: a) by b) on c) of d) t..
1. Introduction c++ 강의를 마친 후, 파릇파릇한 신입생이 메일로 질문을 했다. 내용은 trivial한 내용이었는데, 다음과 같았다. c와 c++ 둘다 printf를 쓸 수 있더라, printf와 std::cout의 차이점이 무엇이냐...
1. Introduction 삽입 정렬은 원소가 들어갈 자리를 찾고 그 위치에 삽입한 뒤, 그 보다 큰 원소를 뒤로 밀어내는 방식의 정렬 알고리즘이다. 선택 정렬과 같이 $O(n^2)$의 시간 복잡도를 가지고 있다. 2. Approac..
1. Introduction 쉘 정렬은 삽입 정렬이 어느정도 정렬된 리스트에서 좋은 효율을 보인다는 점에서 착안한 삽입정렬의 variation이다. gap에 따라, 떨어진 원소들을 먼저 정렬하고 gap을 줄여나가면서 정렬을 완성..
1. Introduction 병합 정렬은 프로그램 내장 방식으로 유명한 존 폰 노이만에 의해 제안된 정렬 알고리즘이다. 분할 정복법을 기반으로 하여 주어진 리스트를 분할하고 정렬하여 다시 병합한다. 병합 정렬은 최선,..
1. Introduction 3중 병합 정렬은 전체 리스트를 3단계로 나눠 분할 정복하는 merge sort의 variation이다. 2. Approach 다음 코드는 파이썬에서 구현한 3중 병합 정렬이다. def threeWayMergeRun(arr, a, b): thr..
1. Introduction 아래와 같은 이미지를 본 적이 있는가? 마치 사람의 아이콘처럼 생긴 이미지이다. 사람을 설명할 때 이런 아이콘 이미지를 사용하면 편견이나 혐오감을 주지 않아서 꽤 유용하다. 이런 아이콘을..
1. Introduction 조건부 확률은 사건 B가 일어나는 경우에 사건 A가 일어날 확률을 말한다. 사건 B가 일어나는 경우에 사건 A가 일어날 확률 $P(A|B) = {P(A\cap B)\over P(B)}$로 정의한다. 사건 B가 발생했을..
1. Introduction 두 확률 변수의 사전 확률과 사후 확률 사이의 관계를 나타내는 정리이다. 조건부 확률 $P(A|B)$를 알고 싶은데, 가지고 있는 정보가 $P(A), P(B), P(B|A)$일 때, 이를 통해 알아내는 정리이다. 2..
Grammer 1. It was difficult in the beginning, but she got used (?) it. Ans: to -> 간단한 문제, 핵심은 be used to에서 be 대신 get을 쓸 수도 있다는 것. 또한 익숙하다, 적응하다의 뜻으로 쓸 때는 be used..
1. hang up: 전화를 끊다. e.g. After I hang up I remembered what I'd wanted to say. (전화를 끊고 난 뒤에 말하고 싶었던게 생각났다.) 2. kick back: 쉬다. e.g. Kick back and enjoy the summer. (푹 쉬고..
1. Introduction 나이브 베이즈 또는 나이브 베이즈 분류는 분류 문제에 베이즈 정리를 적용한 기법이다. 지식을 기반으로 결정하는 인간의 판단방법을 실제 기법으로 옮긴 듯한 방법이다. 나이브 베이즈는 데이..
1. Introduction 원 핫 인코딩은 아래와 같이 데이터 벡터를 벡터의 각 값을 column labeling하고 해당 값을 1로 표시하는 방식의 행렬로 인코딩하는 방법이다. 당연히 해당 값 외의 다른 column에 대해서는 해당..
1. Introduction 희소행렬은 행렬의 값이 대부분 0인 행렬을 의미한다. 원 핫 인코딩 또는 마켓의 장바구니 데이터가 대표적으로 희소행렬로 표현된다. 다음 그림은 희소행렬의 예시인데, 이 경우 자료를 그대로..
1. Introduction 버블 정렬은 인접한 두 원소를 비교해가며 정렬하는 정렬 알고리즘이다. 구현이 매우 간단한 것으로 코딩을 처음 배우는 사람들이 주로 쓰는 알고리즘이지만, 성능이 매우 구리다. 같은 $O(n^2)$..
1. Introduction 칵테일 정렬 (또는 칵테일-셰이커 정렬)은 버블 정렬의 Variation으로, 한번의 루틴마다 방향을 바꿔서 정렬하는 알고리즘이다. 버블 정렬에서 크게 바뀌지는 않았지만 일반적인 경우에서 버블 정..
1. Introduction 홀짝 정렬은 홀수부분과 짝수부분을 나눠서 정렬하는 버블 정렬의 variation이다. 칵테일 정렬과 같이 시간복잡도가 $O(n^2)$에 머물러 있지만 오리지널 버블 정렬보다 빠른 것으로 알려져 있다...
1. Introduction 선택정렬은 각 루틴마다 최소(최대)값을 찾아 정렬하는 방식의 정렬 알고리즘이다. 버블 정렬과 그 variation들과 같은 $O(n^2)$알고리즘이지만, 저들과는 궤를 달리한다. 2. Approach 다음 이미..
1. Introduction 이중 선택 정렬은 한번의 루틴에서 최소값과 최대값을 같이 찾는 방식으로 정렬하는 선택정렬의 variation이다. 2. Approach 다음 코드는 파이썬에서 이중 선택 정렬을 구현한 것이다. def double..
디플렉션이란 원하는 목적을 이루기 위해, 방어하고 있는 상대 말을 쫒아내는 것이다. 다음 이미지에서 흑은 나이트를 d5에 배치해서 상대 킹과 퀸에 대해 포크를 걸 수 있다. 하지만 정작 중요한 d5를 백의 비숍..
디코이는 내가 전술적인 이득을 얻도록 하기 위해 상대 기물을 유인하는 것이다. 다음 이미지에서 흑의 나이트는 f4로 이동하여 퀸과 룩에 대해 포크를 걸어 이득을 취할 수 있지만 디코이를 사용하면 더 큰 이득..
풍차공격은 룩과 비숍을 이용하여 대량의 이득을 챙기는 전술이다. 디스커버드 체크(Discovered Check)를 기반으로 사용된다. 다음 그림에서 백은 룩을 g7에 배치하여 체크를 부른다. 흑은 킹을 h8로 움직여 체크..
1. Uniform binary search 이진탐색의 mid는 현재 값에서 항상 일정한 값 만큼만 차이나게 된다. 즉 현재 a[mid]의 값을 검사했다면 다음에 검사할 값은 a[mid + k] or a[mid - k] 이다. 따라서 매 루틴마다 다음..
1. Introduction 코딩을 하다 보면 꼭 전체를 정렬할 필요는 없는데 n번째로 큰 원소, 정확히는 n째 인덱스의 값을 얻고 싶을 때가 있다. 예를 들어, 한번 뽑고 나면 다시 섞여버리는 리스트라던가... 필자는 백준..
1. Introduction 순열이란, 어떤 데이터들에 대해서 해당 데이터로 줄을 세우는 것을 말한다. 예를 들어, (1,2,3) 에 대한 순열은 다음과 같다. (1,2,3) (1,3,2) (2,1,3) (2,3,1) (3,1,2) (3,2,1) 필자는 알고리즘..
자료구조란 데이터를 효율적으로 저장, 탐색, 추가, 삭제, 수정을 하기 위한 특별한 틀 또는 그것들을 배우는 학문을 의미한다. 자료구조란 학문이 굉장히 고전적이고 이렇다할 참신한 기법이 더 이상 나오기가 힘..
포프TV - 부모의 생성자를 호출하려면에서 java, c#은 부모 호출하려면 super, base 등으로 우대해주는데 c++을 이름을 막불러서 패륜아라고ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
포크는 하나의 기물로 둘 이상의 상대 기물을 공격하는 것이다. 다음 이미지에서 흑의 나이트는 e5로 움직이면서 백의 킹과 룩을 동시에 공격한다. 백은 체크에 걸렸으므로 킹을 움직여야 하고 흑은 룩을 공짜로..
전술이란? 전술이란 쉽게 말해 묘수를 말한다. 당장의 한 수, 두 수 미래의 이득을 취하기 위한 방법으로, 상대의 선택권을 제한하고 상대의 기물을 잡거나 좋은 포지션을 잡는 등 실질적인 이득을 얻을 수 있다...
일직선 공격이 가능한 기물 (비숍, 룩, 퀸)으로 상대의 기물들을 공격하는데, 가치가 낮은 기물 (A)이 가치 높은 기물 (B)을 막아주고 있는 형태일 때, "A가 핀에 걸렸다"라고 한다. 핀의 의미는 "A를 다른 곳에..