본문 바로가기
알고리즘

백준 17413번 Rust 풀이

by PudgeKim 2021. 10. 11.

러스트를 연습하려고 풀어본 문제인데 풀고보니 match 표현식을 활용해봤으면 더 좋았을거 같습니다.

문제 링크
https://www.acmicpc.net/problem/17413

 

17413번: 단어 뒤집기 2

문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져

www.acmicpc.net

 

풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
use std::io::{self};
 
fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input);
 
    // <를 찾으면 true
    let mut is_angle = false;
    let mut tmp_word = String::new();
    let mut answer = String::new();
 
    for ch in input.chars() {
        if ch == '<' {
            is_angle = true;
            if tmp_word.len() == 0 {
                answer.push(ch);
                continue;
            } else {
                let converted = reverse_word(&mut tmp_word);
                answer.push_str(&converted);
                answer.push('<');
                tmp_word = String::new();
                continue;
            }
 
        }
        if ch == '>' {
            answer.push(ch);
            is_angle = false;
            continue;
        }
        // 꺽쇠 안에 있는 단어들은 뒤집지 않으므로
        if is_angle {
            answer.push(ch);
            continue;
        }
        // rust stdin 특성상 마지막은 줄바꿈 문자임
        if ch == ' ' || ch == '\n' {
            if tmp_word.len() > 0 {
                let converted = reverse_word(&mut tmp_word);
                answer.push_str(&converted);
                answer.push(' ');
                tmp_word = String::new();
            } else { // 공백이 이어지는 경우
                answer.push(' ');
            }
        } else {
            tmp_word.push(ch);
        }
    }
    println!("{}", answer);
 
}
 
fn reverse_word(word: &mut String-> String {
    let word_byte = word.as_bytes();
    let mut converted = String::new();
    for i in (0..word.len()).rev() {
        converted.push(word_byte[i] as char);
    }
 
    converted
}
 
cs

'알고리즘' 카테고리의 다른 글

백준 12933번 오리 Rust 풀이  (0) 2021.10.11
백준 14467번 Rust 풀이  (0) 2021.10.10
백준 1913번 달팽이 Rust 풀이  (0) 2021.10.10
카카오 인턴십 표 편집 (Python)  (0) 2021.08.21
백준 사회망 서비스(Python/Go)  (0) 2021.04.15