본문 바로가기

이론/알고리즘13

백준 1463번: 1로 만들기 1로 만들기 성공시간 제한메모리 제한제출정답맞은 사람정답 비율2 초128 MB48311156931023132.331%문제정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오.입력첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다.출력첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다.예제 입력 1 복사2 예제 출력 1 복사1 예제 입력 2 복사10 예제 출력 2 복사3 힌트10의 경우에 10 -> 9 -> 3 -> 1 로 3번 만에 만들 수 있다.출처문.. 2018. 8. 6.
알고리즘 스터디 5회차 - 동적 계획법 (백준 2579번: 계단 오르기) 이번 알고리즘 스터디에서는 동적 계획법 (Dynamic Programming) 에 대해 간단히 배우고, 이를 적용하여 문제를 풀어보는 시간을 가졌다. 동적 계획법이란 쉽게 말해 복잡한 문제들을 간단한 여러개의 문제로 나누어 하나씩 해결해나가는 것으로,여러 알고리즘 문제 분류에서 쉽게 찾아 볼 수 있다. 이번에 풀어 본 문제도 간단한 동적 계획법에 해당한다. 계단 오르기 성공시간 제한메모리 제한제출정답맞은 사람정답 비율1 초128 MB255809813727638.232%문제계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다.예를 들어 와 같이 시작점에서부터 첫 번째.. 2018. 6. 5.
백준 2745번: 진법변환 백준은 여기 안올리는데 이 문제는 하도 뻘짓을 많이 해서 올려본다. 진법 변환 성공시간 제한메모리 제한제출정답맞은 사람정답 비율1 초128 MB34621937163657.103%문제B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35입력첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.출력첫째 줄에 B진법 수 N을 10진법으로 출력한다.예제 입력 1 복사ZZZZZ 36 예제 출력 1 복사60466175 처음엔 1c.. 2018. 5. 31.
알고리즘 스터디 4회차 - Linked List로 Heap Sort구현 실패했다. ㅈㅈ... 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416.. 2018. 3. 25.
알고리즘 스터디 3회차 - 이진트리(Binary Tree) 구현 - 이진탐색트리 구현 구글링 하는데 90% + 옮겨 적는데 8% + 합치는데 2% 정도의 비율로 이진 트리를 구현하였다. 몇 군데의 블로그에 올려진 이진트리 소스들을 보고 짜맞춰서 순회 기능 + 추가 및 삭제 기능을 가진 이진 트리를 구현해보았다. 책은 어차피 라이브러리에 구현되어있는 이진 트리를 쓰고, 심지어 언어도 파이썬이라 개념만 정리하고 나머지는 구글링에 의존하여 소스를 짰다. 사실 짰다는 말보다는 짜맞췄다라는 말이 더 어울리지만 "이해했으면 된거지..." 라고 생각하며 정리해본다. 이진 트리 구현하랬는데 이진탐색트리를 해버렷네 ㅎ 이진탐색트리란? 효율적인 탐색 작업을 위해 만들어진 자료구조로 몇 가지 특징을 가지고 있다. 1. 모든 원소는 서로 다른 유일한 키를 가진다. 2. 왼쪽 서브트리의 원.. 2018. 3. 9.
알고리즘 스터디 2회차 - Stack & Queue 구현 저번 시간에 만들었던 연결 리스트를 이용해 Stack과 Queue를 만들어보았다. 끝에서만 항목(item)을 삭제하거나 저장하는 자료구조인 LIFO의 Stack, 양 끝에서 삽입과 삭제가 각각 수행되는 자료구조인 FIFO의 Queue를 몇 가지 특징과 함께 정리해보았다. 나중에 다시 볼 수 있게 나만의 언어로 작성하는 글이라 읽기 불편할 수 있지만... 1. StackStack의 주요 함수는 삽입을 담당하는 push와 삭제를 담당하는 pop이다.기본적으로 자료구조의 끝에서만 삽입과 삭제가 일어나기 때문에 구현하는데에는 그리 어렵지 않았다. push :: list와 KeyData를 입력받아 리스트의 끝에 연결해준다.pop :: 리스트의 끝에 있는 항목을 날려준다.print :: 리스트의 항목들을 보여준다... 2018. 2. 28.