(백준/C++) 1904_01타일
1904번: 01타일 문제는 동적 계획법으로 풀 수 있는 문제입니다. 동적 계획법(Dynamic Programming, DP)이란, 큰 문제를 작은 문제들로 나누어 풀어나가고 작은 문제의 해를 저장해 다시 계산하지 않고 사용하는 방식입니다. 동적 계획법 문제는 최적 부분 구조와 중복된 부분 문제의 두 가지 속성을 가진 문제에 유용합니다. 01타일...
1904번: 01타일 문제는 동적 계획법으로 풀 수 있는 문제입니다. 동적 계획법(Dynamic Programming, DP)이란, 큰 문제를 작은 문제들로 나누어 풀어나가고 작은 문제의 해를 저장해 다시 계산하지 않고 사용하는 방식입니다. 동적 계획법 문제는 최적 부분 구조와 중복된 부분 문제의 두 가지 속성을 가진 문제에 유용합니다. 01타일...
백준 2580번: 스도쿠 (acmicpc.net) 문제는 백트래킹으로 해결할 수 있는 문제입니다. 문제를 차근차근 풀어나가고 정리해보면 어렵지 않은 문제지만, 접근법에 따라 잔실수가 많을 수 있는 문제입니다. 저 같은 경우는 기저사례로 해 찾기를 끝내려고 시도했다가 값이 초기화 되어 돌아가는 문제가 생기거나 Loop 종료 조건에서 고민을 하고, 이...
백준 9663번: N-Queen (acmicpc.net) 문제는 백트래킹(backtracking) 문제의 대표 주자격인 문제입니다. 이 문제는 체스판에 퀸을 놓는 모든 가능한 방법을 찾을 때, 백트래킹 알고리즘을 사용합니다. 백트래킹이란, 해를 찾는 도중에 그 해가 정답이 될 수 없다는 것이 판명되면 즉시 다른 해를 찾는 방법입니다. 이 경우, ...
C언어에서는 데이터를 변수라는 식별자에 저장해서 언제든지 해당 메모리를 다시 접근해 데이터를 사용할 수 있게끔 되어 있습니다. 여기에서 몇 가지 알아야 할 부분은, 코드에서 각각 접근할 수 있는 영역입니다. 지역 변수 (자동 변수) 스택(Stack) 영역에 할당되는, 블록 안으로 사용 범위가 제한되는 변수입니다. 지역 변수는 블록(지역) 내에서...
컴퓨터가 정수를 표현하는 방법은 2진수로 표현하기 때문에, 처음에 낯설더라도 배우고나면 어떻게 컴퓨터가 수를 표현하는지 이해할 수 있습니다. 하지만, 컴퓨터의 실수. 즉, 소수를 표현하는 방법은 이해하기 어려운 부분이 존재합니다. 컴퓨터는 실수를 두 가지 방법으로 표현 가능합니다. 고정 소수점과 부동 소수점이 그 방법입니다. 고정 소수점은 단순...
백준 15649번: N과 M은 백트래킹을 시작하기 좋은 연습문제라고 생각됩니다. 이번 문제에서는 값을 순회하고 각 수에 대한 방문 여부를 체크하는 것으로 배열과 재귀 함수를 통해 구현해봤습니다. 이때, 각 수에 대한 방문 여부를 판단하는 것이 백트래킹의 역할입니다. 즉, DFS로 모든 경우의 수를 찾아가면서, 백트래킹을 통해 이미 선택된 숫자...
문자열을 정수나 실수로 변환하는 과정에는 여러가지가 있습니다. C 언어에서 <cstdlib> 헤더의 std::atoi()나 std::atof() 함수를 사용하는 방법, <string> 헤더의 std::stoi()나 std::stof() 함수를 사용하는 방법, 그리고 std::stringstream 을 사용하는 방법이 있습니다. ...
정수나 실수를 문자열로 변환하는 방법에는 여러가지가 있습니다. 가장 흔히 쓸 수 있는 std::to_string()부터 std::stringstream을 사용하는 방법, 그리고 안전하지 않지만 sprintf()를 사용하는 방법이 있습니다. std::to_string() std::to_string() 함수는 C++의 <string> 헤더...
실행 파일은 보조 기억장치(SSD)에 저장되어 있다가 실행을 시키면 IO인터럽트가 발생하며 프로세스 제어 블록(PCB)이 생성되며 RAM에 할당됩니다. 이때, 해당 프로세스의 메모리 영역은 크게 Data영역(공용영역), Code영역, 힙, 스택으로 구성됩니다. C언어의 메모리 구조 이미지 출처: https://ko.wikipedia.org/wi...
하노이의 탑 문제는 재귀 문제의 대표주자격 문제입니다. 11729번: 하노이 탑 이동 순서 (acmicpc.net) 문제는 3개의 기둥과 그 위에 있는 서로 다른 크기의 원반이 주어지고, 첫 번째 기둥에서 세 번째 기둥으로 모든 원반을 이동시키는 것이 목표입니다. 이때, 두 가지 규칙이 존재하는데, 한 번에 한 개의 원판만을 다른 탑으로 옮...