첫 줄에 이름 수 n, 다음 n줄에 영어 이름이 하나씩 주어진다. 가장 긴 이름의 길이를 폭으로 삼아, 모든 이름을 그 폭에 오른쪽으로 맞춰 입력 순서대로 한 줄씩 출력하라. 오른쪽 맞춤이란 이름 앞(왼쪽)에 빈칸을 붙여 길이를 폭과 같게 만드는 것이다. 가장 긴 이름은 빈칸 없이 그대로 나온다.
입력
1 ≤ n ≤ 100. 이름은 영어 대소문자만, 길이 1 ~ 20
출력
n줄, 각 줄은 앞에 빈칸을 붙여 폭에 맞춘 이름
예시 1 · stdin
3
Ann
Maximilian
Jo
stdout
Ann
Maximilian
Jo
main.py
오류 목록00F8 ↓ · ⇧F8 ↑
입력(stdin)
실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).
$ 준비됐어요
코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.
다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이
왼쪽에 빈칸을 채우는 함수: Python s.rjust(w), JS·TS s.padStart(w), C# s.PadLeft(w), Java String.format("%" + w + "s", s), C printf("%*s", w, s)(폭을 인자로 넘겨요), C++ std::setw(w). 크레이콘 s.앞채우기(w)(C#의 PadLeft와 같아요, "7".앞채우기(3, "0")이면 007). 이름이 왼쪽에 붙는 쪽은 Python ljust, C %-*s처럼 이름이 비슷해서 헷갈리기 쉬워요. 함정: 폭은 모든 이름을 다 읽은 뒤에야 알 수 있어요. 읽으면서 바로 출력하면 그때까지의 최대 폭으로 맞추게 되고, 폭을 최대 길이 20으로 고정해도 틀려요.
Pythonmain.py · 5 줄
n = int(input())names = [input().strip() for _ in range(n)]width = max(len(name) for name in names)for name in names: print(name.rjust(width))
import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine().trim()); String[] names = new String[n]; int width = 0; for (int i = 0; i < n; i++) { names[i] = br.readLine().trim(); width = Math.max(width, names[i].length()); } StringBuilder out = new StringBuilder(); for (String name : names) out.append(String.format("%" + width + "s", name)).append('\n'); System.out.print(out); }}
C#Main.cs · 14 줄
using System;using System.Linq;class Program{ static void Main() { int n = int.Parse(Console.ReadLine()); string[] names = new string[n]; for (int i = 0; i < n; i++) names[i] = Console.ReadLine().Trim(); int width = names.Max(s => s.Length); foreach (string name in names) Console.WriteLine(name.PadLeft(width)); }}
C++main.cpp · 17 줄
#include <algorithm>#include <iomanip>#include <iostream>#include <string>#include <vector>int main() { int n; std::cin >> n; std::vector<std::string> names(n); size_t width = 0; for (auto& name : names) { std::cin >> name; width = std::max(width, name.size()); } for (const auto& name : names) std::cout << std::setw(static_cast<int>(width)) << name << "\n";}
Cmain.c · 15 줄
#include <stdio.h>#include <string.h>int main(void) { int n, width = 0; char names[100][21]; if (scanf("%d", &n) != 1) return 0; for (int i = 0; i < n; i++) { scanf("%20s", names[i]); int len = (int)strlen(names[i]); if (len > width) width = len; } for (int i = 0; i < n; i++) printf("%*s\n", width, names[i]); return 0;}
Craykonmain.cray · 13 줄
n = 콘솔.줄읽기().수로변환();names = [];width = 0;반복 (i = 0; i < n; i++){ name = 콘솔.줄읽기().공백제거(); names.넣기(name); width = 수학.큰수(width, name.길이);}각각 (name 에서 names){ 콘솔.쓰기(name.앞채우기(width));}