
BOJ 1009 분산처리
2023-05-25
1 min
첫째 줄과 N+2번째 줄에는 골뱅이 N+2개를 출력한다.
둘째 줄부터 N+1번째 줄까지는 예제 출력과 같은 방식으로 골뱅이 2개와 공백 N개를 출력한다.
첫째 줄에 정수 ()이 주어진다.
해당 문제는 골뱅이(@)문자를 이용해 정사각형을 출력하는 문제이다.
이러한 유형의 문제는 그려야 할 전체 이미지를 부분적으로 나누어 생각하면 쉽게 해결할 수 있다.
정사각형은 가로줄 2개와 세로줄 2개로 이루어져 있다.
이러한 사실을 바탕으로 해당 문제를 해결할 수 있는 로직을 생각해 보면 아래와 같다.
필자는 가로줄과 세로줄을 각각 그리는 함수를 구현하여 해당 문제를 해결했다.
import java.io.*;
public class Main {
static StringBuilder sb = new StringBuilder();
// 가로줄 그리는 함수
static void drawHor(int N) {
for(int i = 0; i < N + 2; i++) sb.append("@");
sb.append("\n");
}
// 세로줄 그리는 함수
static void drawVer(int N) {
for(int i = 0; i < N; i++) {
sb.append("@");
for(int j = 0; j < N; j++) sb.append(" ");
sb.append("@\n");
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 정수 N 입력
int N = Integer.parseInt(br.readLine());
drawHor(N); // 가로줄 그리기
drawVer(N); // 세로줄 그리기
drawHor(N); // 가로줄 그리기
System.out.println(sb);
}
}
#include <iostream>
#include <string>
#define fastio ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr)
#define endl '\n'
using namespace std;
string sb;
// 가로줄 그리는 함수
void drawHor(int N) {
for(int i = 0; i < N + 2; i++) sb += "@";
sb += "\n";
}
// 세로줄 그리는 함수
void drawVer(int N) {
for(int i = 0; i < N; i++) {
sb += "@";
for(int j = 0; j < N; j++) sb += " ";
sb += "@\n";
}
}
int main() {
fastio;
// 정수 N 입력
int N;
cin >> N;
drawHor(N); // 가로줄 그리기
drawVer(N); // 세로줄 그리기
drawHor(N); // 가로줄 그리기
cout << sb << endl;
return 0;
}
var sb = ""
// 가로줄 그리는 함수
fun drawHor(N: Int) {
for(i in 0 until (N + 2)) sb += "@"
sb += "\n"
}
// 세로줄 그리는 함수
fun drawVer(N: Int) {
for(i in 0 until N) {
sb += "@"
for(j in 0 until N) sb += " "
sb += "@\n"
}
}
fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
// 정수 N 입력
var N = readLine().toInt()
drawHor(N) // 가로줄 그리기
drawVer(N) // 세로줄 그리기
drawHor(N) // 가로줄 그리기
println(sb)
}
from sys import stdin
sb = ""
# 가로줄 그리는 함수
def drawHor(N):
global sb
for i in range(0, (N + 2)):
sb += "@"
sb += "\n"
# 세로줄 그리는 함수
def drawVer(N):
global sb
for i in range(0, N):
sb += "@"
for j in range(0, N):
sb += " "
sb += "@\n"
def main():
# 정수 N 입력
N = int(stdin.readline())
drawHor(N) # 가로줄 그리기
drawVer(N) # 세로줄 그리기
drawHor(N) # 가로줄 그리기
print(sb)
if __name__ == "__main__":
main()
import Foundation
var sb = ""
// 가로줄 그리는 함수
func drawHor(N: Int) {
for i in 0..<(N + 2) {
sb += "@"
}
sb += "\n"
}
// 세로줄 그리는 함수
func drawVer(N: Int) {
for i in 0..<N {
sb += "@"
for j in 0..<N {
sb += " "
}
sb += "@\n"
}
}
func main() {
// 정수 N 입력
var N = Int(readLine()!)!
drawHor(N: N) // 가로줄 그리기
drawVer(N: N) // 세로줄 그리기
drawHor(N: N) // 가로줄 그리기
print(sb)
}
main()
