Rust에서 String을 반복(iteration)하거나 문자(char) 단위로 접근하는 방법은 몇 가지가 있습니다. Rust의 String은 UTF-8로 인코딩된 가변 길이 문자열을 저장하기 때문에 문자나 바이트에 접근하는 방식에 따라 다르게 처리해야 합니다. 아래에서는 다양한 접근과 반복 방법들을 소개합니다.1. 문자(char) 단위로 반복Rust의 String은 UTF-8로 인코딩되어 있기 때문에, 문자열을 문자(char) 단위로 접근하려면 .chars() 메서드를 사용해야 합니다.rust코드 복사fn main() { let text = String::from("Hello, Rust!"); // 문자 단위로 반복 for c in text.chars() { println!..
전체 글
Rust에서 배열이나 컬렉션을 반복하는 방법은 여러 가지가 있지만, 가장 많이 사용되는 방법은 for 루프와 이터레이터(iterator)를 사용하는 방식입니다. Rust의 반복 패턴은 가독성과 안전성을 중시하는 경향이 있으며, C에서 사용하는 인덱스를 통한 반복이나 Python에서 사용하는 값 자체를 반복하는 방식과 유사하지만, Rust만의 독특한 방식이 있습니다.Rust에서 일반적으로 사용되는 배열 반복 방법들을 소개하고, 어떤 방법이 통용되는지 설명하겠습니다.1. for 루프 + iter(): 가장 많이 사용되는 방식Rust에서 가장 흔하게 사용되는 방법은 for 루프와 iter() 메서드를 사용하는 방식입니다. 이 방식은 Python의 값 자체를 반복하는 방식과 비슷합니다. iter()는 불변 반복..
Mutabilitymutable and imuutable typesfn main() { let mut x = 5; println!("the variable is mutable {x}"); let copy = x; x = 6; println!("the programmer changed the variable to {copy} -> {x}");}x 는 mutable하고 copy 는 immutable한 variable이다.constantconst THREE_HEURES_IN_SEC: u32 = 60 * 60 * 3;const 는 global scope, local scope 모두 선언이 가능const 는 type을 동반하여 : notation으로 표기해야함.const 는 compil..
이 글은 Rust Book의 The Guessing Game에 나오는 다양한 Rust 맛보기 문법을 정리하였습니다.error 처리(.except), string literal, String, enum, type inference를 다룹니다.Error 처리하기.expect()io::stdin() // 원래는 std::io로 라이브러리를 가져온다 .read_line(&mut guess) .expect("Failed to read line");Result에도 method가 있다 -> 그게 .expectread_line() -> Result{Err} -> expect -> print Stringread_line() -> Result{OK} -> expect -> OK안에 있는 값..
아래의 내용들은 시스템 프로그래밍(CS230; CSAPP)를 수강할 때 lab session을 진행하고 통과된 코드를 모아두었습니다. 특히 기본적으로 CMU에서 제공하는 datalab 자료 에서 구현하라고 한 함수들과 각 대학에서 주는 과제들을 통합했습니다. 모을 수 있는 함수들은 모두 모았으니 이 글 하나로도 datalab을 정복하실 수 있을 것입니다. 관련된 개념들은 작성한 글의 링크를 달아두었으니 모르는 개념이 있으면 해당 링크를 참고하셔서 이해하시면 좋을 것 같습니다.[CSAPP/Lab Session] - [CSAPP] Datalab :: bits.c (시스템 프로그래밍, 데이터랩) - Part1bitXor, bitAnd, bitNor, bitOr / getByte, reverseBytes, lo..
아래의 내용들은 시스템 프로그래밍(CS230; CSAPP)를 수강할 때 lab session을 진행하고 통과된 코드를 모아두었습니다. 특히 기본적으로 CMU에서 제공하는 datalab 자료 에서 구현하라고 한 함수들과 각 대학에서 주는 과제들을 통합했습니다. 아래에 datalab 문제의 해설 및 풀이가 있으니 공부에 활용하세요. 데이터랩 과제와 지필고사를 준비할 때 유용하게 활용할 수 있을 것입니다. 다른 bits.c 시프 데이터랩 풀이를 보려면 아래에서 원하는 함수를 검색하세요![CSAPP/Lab Session] - [CSAPP] Datalab :: bits.c (시스템 프로그래밍, 데이터랩) - Part1bitXor, bitAnd, bitNor, bitOr / getByte, reverseBytes,..
아래의 내용들은 시스템 프로그래밍(CS230; CSAPP)를 수강할 때 lab session을 진행하고 통과된 코드를 모아두었습니다. 특히 기본적으로 CMU에서 제공하는 datalab 자료 에서 구현하라고 한 함수들과 각 대학에서 주는 과제들을 통합했습니다. 모을 수 있는 함수들은 모두 모았으니 이 글 하나로도 datalab을 정복하실 수 있을 것입니다.[CSAPP/Lab Session] - [CSAPP] Datalab :: bits.c (시스템 프로그래밍, 데이터랩) - Part1bitXor, bitAnd, bitNor, bitOr / getByte, reverseBytes, logicalShift / Tmin, Tmax, negate, sm2tc, tc2sm[CSAPP/Lab Session] - [C..

아래의 내용들은 시스템 프로그래밍(CS230; CSAPP)를 수강할 때 lab session을 진행하면서 얻은 알고리즘을 정리했습니다. 이 글에서는 비트 세기 알고리즘, Bit Counting Algorithm에 대해서 알아보려고 합니다. 이 글에서는 알고리즘의 개념에 대해서 설명하고 자세한 코드는 다른 글을 통해서 설명하겠습니다. Bit Counting Algorithm은 선형적인 방법(linear)과 이분적인 방법(binary)가 있으니, 이를 구분해서 글을 읽으면 도움이 될 것입니다. Binary algorithm은 3. Neighbor Counting과 4. Cross Counting 을 소개합니다. 연산자 개수 단축을 위해서 datalab을 해결할 때에는 두 알고리즘을 사용해야 합니다. 일부 랩..
0. 블로그를 시작하며 필자는 이 블로그를 통해 학업의 내용들을 기록해두고자 합니다. 2023 가을학기에 시스템 프로그래밍(CS230)을 수강한 뒤에 현재 겨울방학, 블로그의 필요성을 느낍니다. 지난 학기에는 데이터 사이언스 개론(CS361)을 수강하였고 좋은 성적을 받았지만 가을학기 개강 이후에 내용을 떠올리려니 내용이 드문드문 생각나고, 세세한 내용을 많이 까먹인 모습이 안타까웠습니다. 모든 공부가 그렇듯이, 까먹는 일은 다반사이지만 전공 내용을 하나라도 더 기억하고 그 논리적인 흐름을 가져가는 것이 좋다고 생각했습니다. 이후에 진행할 전공 공부를 위해서만이 아니라 그때 했던 생각들을 기록함으로 나중에 비슷한 생각을 할 수 있는 뼈대를 만들고 싶습니다. 고등학교의 공부는 반복의 연속이기에 정형화되어 ..