본문 바로가기

알고리즘

(43)
백준 알고리즘 기초 - 자료구조1 (큐, 덱) 금방 끝낼 수 있을 거라고 생각했는데, 생각보다 소요되는 시간이 꽤 된다.. 자꾸 문제를 풀다가 어떤 덫에 걸리면 그걸 내 힘으로 풀어보겠다고 미련하게 시간을 날린다. 어느 정도의 시간을 보내면 덫에서 빠져나와 정신을 차리는 지혜도 좀 발휘하자 미련한 놈아 큐, 덱 정리다. - * 큐: 한쪽 끝에서만 넣고, 다른 한쪽 끝에서만 뺄 수 있는 자료 구조다. FIFO. 먼저 온 놈이 먼저 나간다. 주로 BFS에서 많이 사용된다. 스택처럼 일차원 배열 하나로 구현이 가능하고, STL이 있지만 일단 한번 구현해본다. 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보..
백준 알고리즘 기초 - 자료구조1 (스택) 바로 이전 글에서.. 미련함에서 벗어나자고 했건만.. 아직 한참 멀었다.. 오답 수집가냐 진짜 떠오르는대로 꾸역꾸역 코딩을 하다보니 이런 일이 벌어졌다. 구조를 구상하고, 정리가 됐을 때 코딩을 시작해라 좀. 저렇게 시간 낭비하는 건 너무 아깝다.. 됐고 스택 공부한 거나 정리 해보자. - * 스택: 한쪽 끝에서만 자료를 넣고 뺄 수 있는 자료구조. 제일 위(top)에 뭐가 있는지가 관심사다. - top에 추가하는 것을 push, top에서 빼는 것을 pop이라고 한다. - LIFO (Last In First Out) 구조다. 제일 마지막에 들어온 사람이 제일 먼저 나가야 된다. (짬 대우) * 스택 구현: 일단 STL 없이 한번 구현 해봤다. 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ..
백준 알고리즘 기초 - 알고리즘 시작 돈을 주고 산 강의라.. 그대로 옮겨 올 수는 없을 것 같고.. 딱 나한테 필요한 부분만 정리를 해보려고 한다. 누군가 읽을 일이 있을지 모르겠지만 애초에 소개 목적이 아님을 알려둔다.. - * 알고리즘: 어떤 문제를 해결하기 위해 정해진 일련의 절차나 방식을 공식화한 형태로 표현한 것. * 알고리즘 문제 풀이, 고민의 시간: 한 문제를 붙들고 며칠을 고민하기도 했는데, (이제 그런 미련한 짓은 그만) 2~3시간정도만 고민하고 안 되면 바로 정답을 보면서 원리를 이해한 뒤에 다른 문제를 더 푸는 것이 효율적일듯. * 시간 복잡도: 코드를 작성했을 때 시간이 얼마나 걸릴지 예측해보는 것. 최악의 경우에 얼마나 걸릴지를 구한다고 생각하면 된다. 소스 코드를 보고 계산할 수도 있고, 작성하기 전에 먼저 계산 ..