본문 바로가기

Algorithm/Implementation

(C++, Rust) - 백준(BOJ) 23812 : 골뱅이 찍기 - ㅍ

반응형

https://www.acmicpc.net/problem/23812

 

23812번: 골뱅이 찍기 - 돌아간 ㅍ

서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다. 상자 안에는 반시계 방향으로 90도 돌아간 ㅍ자 모양의 골뱅이가 들어있다. 돌아간 ㅍ자 모양은 가로 및 세로로 각각 5개

www.acmicpc.net

출력 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

n을 선언 후 입력받습니다.

📔 풀이과정

출력예시를 보면 두 부분이 반복되는 것을 알 수 있습니다.

1. 가운데가 비어있는 부분

2. 가운데가 차있는 부분

이를 함수로 각각 만들어줍니다.

📔 정답출력

형태에 맞게 함수들을 번갈아 출력해줍니다.


📕 Code

C++

#include <bits/stdc++.h>
using namespace std;
int n;

void printOther(){
  for(int i = 0; i < n; i++){
    for(int j = 1; j <= n * 5; j++){
      if(j <= n || j > n * 4) cout << '@';
      else cout << ' ';
    }
    cout << '\n';
  }
}

void printSquare(){
  for(int i = 0; i < n; i++){
    for(int j = 0; j < n * 5; j++){
      cout << '@';
    }
    cout << '\n';
  }
}

int main(){
  cin >> n;
  printOther();
  printSquare();
  printOther();
  printSquare();
  printOther();
}

Rust

use std::io;


pub fn print_other(n: i64){
  for _ in 0..n {
    for j in 0..n*5 {
      if j < n || j >= n * 4 {
        print!("@");
      }
      else {
        print!(" ");
      }
    }
    println!();
  }
}

pub fn print_square(n: i64){
  for _ in 0..n {
    for _ in 0..n*5{
      print!("@");
    }
    println!();
  }
}

fn main(){
  let mut line = String::new();
  io::stdin().read_line(&mut line).expect("wrong io");
  let n = line.trim().parse::<i64>().unwrap();
  print_other(n);
  print_square(n);
  print_other(n);
  print_square(n);
  print_other(n);
}

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.