백준 18108(ft.rust)

Hyeseong·2023년 5월 30일
0

case-1

use std::io;

fn main() {
    const STANDARD : i32 = 543;
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let mut year = input.split_whitespace();
    let  a: i32 = year.next().unwrap().parse().unwrap();
    print!("{}", a - STANDARD);
   
}

설명

  1. const STANDARD : i32 = 543; - 불기 연도와 서기 연도의 차이인 543을 상수 STANDARD로 선언합니다. 이 상수는 i32 형태의 정수입니다.

  2. let mut input = String::new(); - 빈 문자열을 만들어 input 변수에 저장합니다. mut 키워드는 이 변수를 변경할 수 있게 합니다.

  3. io::stdin().read_line(&mut input).unwrap(); - 사용자로부터 한 줄을 읽어 input 변수에 저장합니다. unwrap()에러 처리를 위한 메소드입니다.

    3.1. Rust의 split_whitespace() 메소드는 주어진 문자열을 공백(스페이스, 탭, 줄바꿈 등)을 기준으로 분할하고, 이를 통해 생성된 각 문자열에 대한 이터레이터반환합니다.

이터레이터는 컬렉션의 요소를 반복적으로 접근할 수 있는 객체로, next() 메소드를 통해 다음 요소를 가져올 수 있습니다. 이 때 next()는 Option을 반환하며, 컬렉션의 요소가 더 이상 없을 때None을 반환합니다. 따라서 unwrap() 메소드를 사용해 Option에서 실제 값을 추출하였습니다.

그리고 parse() 메소드를 이용하여 문자열을 원하는 데이터 타입으로 변환하였습니다. 이 경우에는 i32 타입으로 변환하였습니다.

  1. let mut year = input.split_whitespace(); - input 문자열을 공백으로 분리하고, 이터레이터를 year 변수에 저장합니다.

case-2

iter()를 사용하는 대신 trim() 메서드를 사용하여 입력 문자열의 앞뒤 공백을 제거합니다. 그리고 parse()를 직접 input 문자열에 적용하여 정수로 변환함.

use std::io;

fn main() {
    const STANDARD: i32 = 543;
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let a: i32 = input.trim().parse().unwrap();
    println!("{}", a - STANDARD);
}

case-3

use std::io;

const THAI_YEAR_OFFSET: i32 = 543;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();

    let year: i32 = match input.trim().parse::<i32>() {
        Ok(y) => y - THAI_YEAR_OFFSET,
        Err(_) => {
            eprintln!("유효하지 않은 입력입니다. 올바른 연도를 입력하세요.");
            return;
        }
    };

    println!("변환된 연도: {}", year);
}

case-4

use std::io;

const THAI_YEAR_OFFSET: i32 = 543;

fn main() {
    let year: i32 = read_input("불기 연도를 입력하세요: ");
    let converted_year = convert_to_ad(year);
    println!("서기 연도로 변환된 결과: {}", converted_year);
}

fn read_input(prompt: &str) -> i32 {
    println!("{}", prompt);

    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();

    input.trim().parse().unwrap()
}

fn convert_to_ad(year: i32) -> i32{
    year - THAI_YEAR_OFFSET
}

이 코드는 함수를 사용하여 입력을 받고, 연도를 변환하는 로직을 분리하였습니다. read_input 함수는 사용자에게 프롬프트를 출력하고 입력을 받아서 변환된 연도를 반환합니다. convert_to_ad 함수는 받은 불기 연도를 서기 연도로 변환합니다.

main 함수에서는 read_input 함수를 호출하여 사용자로부터 불기 연도를 입력받고, convert_to_ad 함수를 사용하여 연도를 변환한 후 출력합니다.

이러한 함수 분리를 통해 코드를 모듈화하고 가독성을 높일 수 있습니다.

php code

<?php

$handle = fopen("php://stdin", "r");
$year = intval(fgets($handle));  // 입력받은 불기 연도를 정수로 변환
$year = $year - 543;  // 불기 연도에서 543을 빼서 서기 연도로 변환
echo $year;
fclose($handle);

?>
profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글