백준 10926(ft. rust)

Hyeseong·2023년 5월 30일
0

??! 성공

문제

준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때, 놀람을 표현하는 프로그램을 작성하시오.

입력

첫째 줄에 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어진다. 아이디는 알파벳 소문자로만 이루어져 있으며, 길이는 50자를 넘지 않는다.

출력

첫째 줄에 준하의 놀람을 출력한다. 놀람은 아이디 뒤에 ??!를 붙여서 나타낸다.

예제 입력 1

joonas

예제 출력 1

joonas??!

예제 입력 2

baekjoon

예제 출력 2

baekjoon??!

제한

  • 시간 제한: 1 초
  • 메모리 제한: 256 MB
  • 제출 수: 177946
  • 정답 수: 89820
  • 맞힌 사람 수: 79172
  • 정답 비율: 51.265%

풀이

케이스-1

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    input = input.trim().to_string(); // 이 줄 추가
    input.push_str("??!");
    print!("{}", input);
}

설명

  1. use std::io;: Rust의 표준 입출력 라이브러리를 가져옵니다.

  2. fn main() {: Rust에서 main 함수는 프로그램의 진입점입니다.

  3. let mut input = String::new();: input이라는 가변 문자열을 선언하고, 초기화합니다.

  4. io::stdin().read_line(&mut input).unwrap();: 표준 입력(stdin)에서 한 줄을 읽어 input 문자열에 저장합니다. .unwrap()는 read_line이 반환하는 Result 타입에서 오류가 발생했는지 확인하고, 오류가 없을 경우에만 값을 반환합니다. 만약 오류가 있다면 프로그램이 panic 상태로 진입하게 됩니다.

  5. input = input.trim().to_string();: 입력받은 문자열의 양쪽 끝에서 공백을 제거합니다. trim 함수는 공백을 제거한 새로운 slice를 반환하기 때문에, to_string 메서드를 사용하여 새로운 String 인스턴스를 생성합니다.

  6. input.push_str("??!");: 문자열 input의 뒤에 "??!"를 추가합니다.

  7. print!("{}", input);: 최종 결과 문자열을 출력합니다.

케이스-2

format! 매크로를 사용하여 풀이할 수 있습니다. 이 방식은 주어진 형식에 따라 문자열을 만드는데 사용됩니다.

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let input = input.trim();
    let output = format!("{}??!", input);
    print!("{}", output);
}

설명

위의 코드에서는 문자열 input에 "??!"를 추가하는 대신, format! 매크로를 사용하여 두 문자열을 결합한 새로운 문자열 output을 만들었습니다. format! 매크로는 주어진 형식에 따라 문자열을 만듭니다. 여기서는 입력 문자열 뒤에 "??!"를 붙여 새 문자열을 만듭니다. 그런 다음 print! 매크로를 사용하여 output을 출력합니다.

케이스-3

또 다른 접근 방식으로는 println! 매크로를 직접 사용하는 것이 있습니다. 이렇게 하면 별도의 문자열을 만들지 않고도 입력 문자열 뒤에 "??!"를 바로 추가할 수 있습니다. 아래는 그 예시입니다.

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let input = input.trim();
    println!("{}??!", input);
}

위의 코드에서는 println! 매크로를 사용하여 입력 문자열과 "??!"를 바로 결합하고 출력합니다. 이 방법은 매우 직관적이고, 중간에 새로운 문자열을 만들 필요가 없으므로 약간 더 효율적일 수 있습니다.

번외 php


$handle = fopen("php://stdin", "r");
$line = fgets($handle);
$line = trim($line); // 이 줄 추가
echo $line."??!";
fclose($handle);
profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글