2025년 4월 14일 월요일

4-3-3강: 컬렉션(Binary Heap, String)

1. Binary Heap: 최대, 최소값을 찾을 때 많이 사용 

//최대값
let mut heap = BinaryHeap::new();
// 값 추가 (자동 정렬됨 - 최대 힙)
heap.push(10);
heap.push(5);
heap.push(20);

// 최대값 확인 (pop 없이)
if let Some(max) = heap.peek() {
    println!("최대값: {}", max); // 20
}

// 최대값 꺼내기 (pop은 값을 제거함)
if let Some(max) = heap.pop() {
    println!("꺼낸 값: {}", max); // 20
}

// 반복적으로 pop하면 큰 값부터 나옴
while let Some(val) = heap.pop() {
    println!("{}", val);
}

//최소 값
let mut min_heap = BinaryHeap::new();
min_heap.push(Reverse(10));
min_heap.push(Reverse(1));
min_heap.push(Reverse(5));

while let Some(Reverse(val)) = min_heap.pop() {
    println!("{}", val); // 1, 5, 10 순으로 출력
}


2. String : 문자열은 벡터를 사용해 문자를 관리


// String은 UTF-8로 인코딩된 문자열을 저장한다.
fn main() {
    // String은 String::new()로 생성할 수 있다.
    let mut eng = String::new();
    // String은 push_str() 메서드를 사용하여 문자열을 추가할 수 있다.
    eng.push_str("hello");

    // to_string() 메서드를 사용하여 &str을 String으로 변환할 수 있다.
    let jpn = "こんにちは".to_string();
    // String::from() 함수를 사용하여 &str을 String으로 변환할 수 있다.
    let kor = String::from("안녕하세요");

    println!("{} {} {}", eng, jpn, kor);
}
// format! 매크로로 포매팅된 문자열 만들수 있다.
fn main() {
    let str = String::from("안녕");
    let idx = 123;

    // format! 매크로는 문자열을 포매팅하여 새로운 String을 생성한다.
    // format! 매크로는 {}를 사용하여 포매팅할 위치를 지정한다.
    let s = format!("{} {}", str, idx);
    println!("{}", s);
}
// 문자열 내 문자들을 탐색하기
fn main() {
    let txt = String::from("안녕하세요.");

    // txt 내의 문자들을 순회한다.
    for c in txt.chars() {
        print!("{} ", c);
    }
}

댓글 없음:

댓글 쓰기