728x90
728x90

문제

나부 행성의 함대 정보를 출력하는 프로그램을 작성하시오.

 

출력

나부 행성의 함대의 정보를 아래와 예제 출력과 같은 표로 출력한다.

처음 두 열의 너비는 문자 15개, 세 번째 열은 11개, 마지막 열의 너비는 10개이다.

 

예제 입력 1

 

예제 출력 1 

SHIP NAME      CLASS          DEPLOYMENT IN SERVICE
N2 Bomber      Heavy Fighter  Limited    21        
J-Type 327     Light Combat   Unlimited  1         
NX Cruiser     Medium Fighter Limited    18        
N1 Starfighter Medium Fighter Unlimited  25        
Royal Cruiser  Light Combat   Limited    4

 

출처

High School > PLU High School Programming Contest > PLU 2011 - Novice 2번

  • 문제를 번역한 사람: baekjoon

 

알고리즘 분류

  • 구현

 

문제 출처

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

 

9654번: 나부 함대 데이터

나부 행성의 함대의 정보를 아래와 예제 출력과 같은 표로 출력한다. 처음 두 열의 너비는 문자 15개, 세 번째 열은 11개, 마지막 열의 너비는 10개이다.

www.acmicpc.net

 


 

문제 해결 방법

  • 예제 출력 결과를 그대로 복사해서 출력하도록 해서 문제를 통과할 수 있었으나, 문제의 조건에 따라 C 스타일 출력 형식을 이용하여 정석대로 문제를 풀었다.

 

코드

#include <iostream>
#include <cstdio>
using namespace std;

struct SHIPS {
    char ShipName[16];
    char Class[16];
    char Deployment[12];
    char InService[11];
};

SHIPS Ships[5] = {
    {"N2 Bomber", "Heavy Fighter", "Limited", "21"},
    {"J-Type 327", "Light Combat", "Unlimited", "1"},
    {"NX Cruiser", "Medium Fighter", "Limited", "18"},
    {"N1 Starfighter", "Medium Fighter", "Unlimited", "25"},
    {"Royal Cruiser", "Light Combat", "Limited", "4"}
};

int main() {
    char s1[16] = "SHIP NAME";      // 15개
    char s2[16] = "CLASS";          // 15개
    char s3[12] = "DEPLOYMENT";     // 11개
    char s4[11] = "IN SERVICE";     // 10개

    printf("%-15s%-15s%-11s%-10s\n", s1, s2, s3, s4);
    printf("%-15s%-15s%-11s%-10s\n", Ships[0].ShipName, Ships[0].Class, Ships[0].Deployment, Ships[0].InService);
    printf("%-15s%-15s%-11s%-10s\n", Ships[1].ShipName, Ships[1].Class, Ships[1].Deployment, Ships[1].InService);
    printf("%-15s%-15s%-11s%-10s\n", Ships[2].ShipName, Ships[2].Class, Ships[2].Deployment, Ships[2].InService);
    printf("%-15s%-15s%-11s%-10s\n", Ships[3].ShipName, Ships[3].Class, Ships[3].Deployment, Ships[3].InService);
    printf("%-15s%-15s%-11s%-10s\n", Ships[4].ShipName, Ships[4].Class, Ships[4].Deployment, Ships[4].InService);

    return 0; 
}

 

채점 결과

 

참고

  • 브론즈V

 

C에서 printf() 함수를 이용하여 출력 시, 텍스트 정렬시키기

  • printf() 함수를 이용하여 출력 시, % 기호 뒤에 -호를 넣어주면 좌측 정렬, 아무것도 넣어주지 않으면 우측 정렬시킬 수 있다.
printf("%-5d", num);    // 5칸의 너비로 텍스트를 좌측 정렬하여 출력
printf("%5d", num);     // 5칸의 너비로 텍스트를 우측 정렬하여 출력
728x90
728x90

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ-2869][C++] 달팽이는 올라가고 싶다  (0) 2022.10.24
[BOJ-1193][C++] 분수찾기  (0) 2022.10.24
[BOJ-2563][C++] 색종이  (0) 2022.10.24
[BOJ-2566][C++] 최댓값  (0) 2022.10.24
[BOJ-2738][C++] 행렬 덧셈  (0) 2022.10.20
[BOJ-2420][C++] 사파리월드  (0) 2022.10.19
[BOJ-2292][C++] 벌집 ✨  (0) 2022.08.27
[BOJ-1712][C++] 손익 분기점  (0) 2022.08.27