본문 바로가기

전체 글

(21)
[Rust] 파일 분할, mod, use, lib.rs 모든 프로그램이 그렇듯이 프로그램이 커지면 하나의 파일로 관리하기가 불가능해집니다. 따라서 파일을 분리하고 서로 연결하는 과정이 필요합니다. cargo로 새 프로젝트를 구성합니다. cargo new greeting cd greeting 예로 인사 프로그램을 만들어 봅시다. // main.rs fn hello_ko() { println!("안녕하세요!"); } fn hello_en() { println!("Hello!"); } fn main() { hello_ko(); hello_en(); } 1. mod는 코드를 구역으로 나눕니다. // main.rs mod korean { pub fn hello_ko() { println!("안녕하세요!"); } } mod english { pub fn hello_en..
[알고리즘 문제] 백준 1443번 망가진 계산기 1443번: 망가진 계산기 (acmicpc.net) 1443번: 망가진 계산기 첫째 줄에 다솜이의 계산기가 표시할 수 있는 자리수 D와 다솜이가 하려고하는 연산의 수 P가 주어진다. D는 2보다 크거나 같고, 8보다 작거나 같은 자연수이고, P는 30보다 작거나 같은 음이아닌 www.acmicpc.net 문제 1에 2에서 9 사이의 숫자를 정해진 횟수만큼 곱해 만들 수 있는 최대의 D자리 수를 만드는 문제 아이디어 D가 최대 8자리이기 때문에 모든 경우를 구한다 해도 많은 시간이 걸리지 않습니다. 1. 백트래킹을 통해 첫 번째부터 P번째 곱할 수를 모두 탐색합니다. 2. 탐색 중 숫자가 D자리를 넘기면 해당 가지를 쳐냅니다. 3. P번째 숫자까지 도달하면, 곱한 값을 기존 답과 비교해 더 큰 수를 골라냅..
[알고리즘] 백 트래킹 백트래킹이란 조건을 만족하는 경우를 탐색하는 방법입니다. 백 트래킹이라는 단어처럼 탐색하는 과정이 길을 찾고 되돌아가는 것과 비슷합니다. 한 번 예시를 들어봅시다. 1, 2, 3으로 만들 수 있는 세 자리 숫자를 모두 출력해야 합니다. 첫째 자리 - 둘째 자리 - 셋째 자리를 순서대로 결정한다고 가정하면, 경우를 트리로 표현할 수 있습니다. 각 자리를 1, 2, 3 순서로 선택하며 내려간다고 하면, 가장 처음 도착하는 숫자는 1-1-1입니다. 1-1-1로 트리의 끝에 도착했다면, 다시 1-1로 돌아가고(백 트래킹 하고) 이번에는 2를 선택합니다. 반복하면 모든 경우를 찾을 수 있습니다. 백 트래킹의 장점은 1. 가능한 경우를 탐색하면서도 가지치기로 경우의 수를 줄이기에 용이합니다. 만약 현재 단계에서 조..