본문 바로가기

카테고리

(315)
백준 알고리즘 1008번: A/B [C++] 문제 출처: www.acmicpc.net/problem/1008 1008번: A/B 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 1. 코드 (예제 1 실행) (예제 2 실행) 2. 풀이 cout.precision(10); 나머지 부분에 대해서는 잘 알고 위에 있는 코드 부분에 대해 설명하겠다. 위 코드는 출력 시 큰 자리부터 10자리를 출력하겠다는 말이다. 만약 가로 안에 숫자가 3이라고 하면 출력시 큰 자리가 나온다 예를 들어 설명하겠다. #include using namespace std; int main() { double A = 1.2345678912; cout.precision(10); cout
백준 알고리즘 1914번: 하노이 탑 [C++] 문제 출처: www.acmicpc.net/problem/1914 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 1. 코드 (실행) 2. 풀이 우선 하노이 탑에 대한 알고리즘에 대해 설명하겠다. 하노이 탑의 알고리즘은 재귀 함수를 이용하여 풀었는데 재귀 함수에 대해 너무 어렵게 접근할 필요가 없고, 실행 순서에 대해 정확히 알려고 하지 않아도 된다. 본질에 집중해야 한다. 우선 하노이 탑이 움직이게 되는 조건들을 살펴보자. 그림 - 4에서 7단계를 보면 제일 마지막 원판이 남았을 때는 기둥 1에서 기둥 3으로 ..
알고스팟(Algospot): 피크닉(PICNIC) [C++] 문제 출처: algospot.com/judge/problem/read/PICNIC algospot.com :: PICNIC 소풍 문제 정보 문제 안드로메다 유치원 익스프레스반에서는 다음 주에 율동공원으로 소풍을 갑니다. 원석 선생님은 소풍 때 학생들을 두 명씩 짝을 지어 행동하게 하려고 합니다. 그런데 서로 algospot.com 1. 코드 (실행) 2. 풀이 -문제 설명 우선 이 문제는 개인적으로 문제부터 이해하기가 많이 힘든 문제였다. 그렇기 때문에 우선 문제에 대해 먼저 알아보자. 예제 입력에서 학생의 수를 4라고 하면 친구 쌍의 수가 6이라고 하면 0 1 1 2 2 3 3 0 0 2 1 3가 순서대로 입력되었는데 친구 쌍의 수는 6이라는 의미는 실질적으로 12명이 있다는 말이다. 그렇기에 12개의..
백준 알고리즘 10172번: 개 [C++] 1. 문제 문제 출처: www.acmicpc.net/problem/10172
알고스팟(algospot): 보글 게임(BOGGLE) [C++] 문제 출처: www.algospot.com/judge/problem/read/BOGGLE algospot.com :: BOGGLE 보글 게임 문제 정보 문제 보글(Boggle) 게임은 그림 (a)와 같은 5x5 크기의 알파벳 격자인 게임판의 한 글자에서 시작해서 펜을 움직이면서 만나는 글자를 그 순서대로 나열하여 만들어지는 영어 www.algospot.com 1. 코드 (실행) 2. 풀이 이 문제는 반복문으로 풀 수 있겠지만 그렇게 된다면 코드가 굉장히 난잡하게 되거나 알아볼 수 없게 되기 때문에 재귀 함수로 구성하였다. 그리고 조건문은 다음과 같다. 범위 초과할 경우, 이미 확인한 경우, 보드판과 글자가 일치하는지, 그리고 인접한 8칸 검사를 할 때 성공적으로 1이 나오는지 등의 경우를 확인했는데 이 ..
컴퓨터의 기본 구조 프로그램 실행(execute) = 데이터 읽기(read) + 데이터 처리(processing) + 데이터 저장(store) CPU(Central Processing Unit) 프로그램 실행과 데이터 처리 담당 한번에 처리하는 데이터의 길이에 따라 8비트, 32비트, 64비트 컴퓨터로 구분 주기억장치(Main Memory) 반도체 기억 장치 칩(semiconductor memory chip)으로 구성 읽기와 쓰기 속도가 매우 빠름 가격↑, 면적↑, 저장 용량↓, 영구저장 불가 보조기억장치(Auxiliary Storage Device or Secondary Memory) 기계적 장치나 복잡한 반도체 칩으로 구성 읽기와 쓰기 속도가 느림 CPU 직접 엑세스 불가(별도의 제어기를 통해 가능) 가격↑, 저장 용량..
자연수에 대한 공리 자연수 a에 대해, a = a이다. 자연수 a와 b에 대해, a = b이면 b = a이다. 자연수 a, b, c에 대해, a = b이고 b = c이면 a = b이다. a와 b에 대해, a가 자연수이고 a = b이면 b도 자연수이다. 1은 자연수이다. 모든 자연수는 오직 하나의 successor(계승자)만 갖는다. 1은 어떠한 자연수의 successor(계승자)가 아니다. 자연수 a와 b에 대해 S(a) = S(b)이면 a = b이다. 집합 X에 대해 1 ∈ X이면 a ∈ X → S(a) ∈ X
합병 정렬(merge sort) C언어 1. 합병 정렬이란? 합병 정렬은 폰 노이만이 제안한 비교기반의 분할 정복 정렬 알고리즘이다. 또한 안정 정렬 중 하나로 속한다. 그리고 최악의 시간 복잡도와 최고의 시간 복잡도는 O(n log n)이다. 2. 실행 순서(오름 차순일때) 1. 배열의 길이가 1이 될 때까지 반으로 나눈다. 2. 그리고 분리된 배열의 좌우를 기준으로 각각의 값을 비교한다. ex) 3과 4의 크기 비교를 한다. 결과 3 < 4 3. 오름 차순에 맞게 비교한 값을 작은 값부터 왼쪽으로 임시 배열에 저장한다. 4. 임시 배열에 저장한 값을 원래 배열에 저장한다. 이 4가지가 정렬이 다 될 때까지 실행이 되면 이렇게 된다. 3. 코드 #include void merge(int a[], int low, int mid, int hig..