{ }codelper
つなげて出力P0373

加点した点数をカンマでつなぐ

班の学生 n 人の点数に、同じ加点 b を足すことにした。
一行目に n と b が空白一つで区切って与えられる。
二行目に点数 n 個が空白一つで区切って与えられる。
加点を足した点数 n 個を、与えられた順に一行に出力せよ。
点数と点数の間には、カンマ一つと空白一つ(", ")を入れる。
最初の点数の前と最後の点数の後ろには何もつけない。
足した点数が 100 を超えてもそのまま出力する。

入力
1 ≤ n ≤ 100、1 ≤ b ≤ 100、0 ≤ 点数 ≤ 100(すべて整数)
出力
一行に、加点を足した点数 n 個を ", " でつないで
例 1 · stdin
3 5
70 85 90
stdout
75, 90, 95
例 2 · stdin
1 10
100
stdout
110
main.py
入力(stdin)

実行すると、これらの行が順に input()・標準入力に渡されます(実行中に入力を求めません)。

$ 準備完了

コードを入力して解くにはパソコンで開いてください。モバイルでは問題と解答を見られます。

ほかの言語では?言語別の解答を見る · 8 言語の解答

いくつかの値を、間にだけ何かを入れて一行につなぐ道具は言語ごとに違います。
Python ", ".join(…)、JS・TS 配列.join(", ")、Java StringJoiner、C# string.Join(", ", 配列)、Craykon リスト.つなぐ(", ")。
C と C++ の解答は「最初の点数でなければ前に , 」を自分で書きます。
落とし穴その一:点数ごとに後ろへ , を書くと、最後の点数の後ろにもカンマが残ります(例 1 が 75, 90, 95, になります)。
落とし穴その二:リストをそのまま出力すると、言語ごとに勝手な形になります。
Python print(リスト) と Java Arrays.toString(配列) は [75, 90, 95] のように角かっこをつけ、JS join() は区切りを渡さないと空白なしの 75,90,95 でつなぎ、Craykon コンソール.書く(リスト) は空白だけでつないで 75 90 95 になります。
落とし穴その三:Python の join は文字列しかつなぎません。
数をそのまま渡すと TypeError で止まるので、str(x + b) に変えて渡します。
JS・TS join、C# string.Join、Craykon つなぐ は数を自動で文字列に変えてくれます。
落とし穴その四:JS で点数を Number で数に変えないと、"70" + 5 は足し算ではなく連結になり 705 になります(例 1 が 705, 855, 905 になります)。

Pythonmain.py · 4 行
n, b = map(int, input().split())scores = list(map(int, input().split()))# join은 문자열만 이어 주므로 수를 str로 바꿔서 넘긴다print(", ".join(str(x + b) for x in scores))
JavaScriptmain.js · 5 行
const lines = require("fs").readFileSync(0, "utf8").split("\n");const [n, b] = lines[0].trim().split(/\s+/).map(Number);const scores = lines[1].trim().split(/\s+/).map(Number);// join(", ")은 사이에만 ", "을 넣는다. 수는 알아서 문자열로 바뀐다console.log(scores.map((x) => x + b).join(", "));
TypeScriptmain.ts · 6 行
import { readFileSync } from "node:fs";const lines: string[] = readFileSync(0, "utf8").split("\n");const [n, b]: number[] = lines[0].trim().split(/\s+/).map(Number);const scores: number[] = lines[1].trim().split(/\s+/).map(Number);// join(", ")은 사이에만 ", "을 넣는다. 수는 알아서 문자열로 바뀐다console.log(scores.map((x: number) => x + b).join(", "));
JavaMain.java · 16 行
import java.util.Scanner;import java.util.StringJoiner; public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int n = sc.nextInt(), b = sc.nextInt();        // StringJoiner는 사이에만 ", "을 넣는다. 문자열만 받으므로 수를 바꿔서 넣는다        StringJoiner line = new StringJoiner(", ");        for (int i = 0; i < n; i++) {            int x = sc.nextInt();            line.add(String.valueOf(x + b));        }        System.out.println(line);    }}
C#Main.cs · 18 行
using System; class Program{    static void Main()    {        string[] head = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries);        int n = int.Parse(head[0]), b = int.Parse(head[1]);        string[] parts = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries);        int[] result = new int[n];        for (int i = 0; i < n; i++)        {            result[i] = int.Parse(parts[i]) + b;        }        // string.Join은 사이에만 ", "을 넣는다. 수 배열도 그대로 받는다        Console.WriteLine(string.Join(", ", result));    }}
C++main.cpp · 14 行
#include <iostream> int main() {    int n, b;    std::cin >> n >> b;    for (int i = 0; i < n; i++) {        int x;        std::cin >> x;        // 첫 점수가 아닐 때만 앞에 ", "을 쓴다        if (i > 0) std::cout << ", ";        std::cout << x + b;    }    std::cout << "\n";}
Cmain.c · 15 行
#include <stdio.h> int main(void) {    int n, b;    if (scanf("%d %d", &n, &b) != 2) return 0;    for (int i = 0; i < n; i++) {        int x;        if (scanf("%d", &x) != 1) return 0;        /* C에는 이어 주는 도구가 없다: 첫 점수가 아닐 때만 앞에 ", "을 쓴다 */        if (i > 0) printf(", ");        printf("%d", x + b);    }    printf("\n");    return 0;}
Craykonmain.cray · 11 行
head = コンソール.数読み();n = head[0];b = head[1];scores = コンソール.数読み();result = [];それぞれ (x の中 scores){    result.追加(x + b);}// 잇기(", ")는 사이에만 ", "을 넣는다コンソール.書く(result.つなぐ(", "));