学生 n 人が小テストを受けた。 学生の番号は、点数が与えられた順に 1 番、2 番、…、n 番である。 点数が c 点未満の学生は再試験を受ける。 一行目に n と c が空白一つで区切って与えられる。 二行目に点数 n 個が空白一つで区切って与えられる。 一行目に再試験を受ける学生の人数を出力せよ。 二行目にその学生たちの番号を小さい順に空白一つで区切って出力せよ。 再試験を受ける学生がいなければ、一行目に 0 だけを出力し、二行目は出力しない。
n, c = map(int, input().split())scores = list(map(int, input().split()))retake = [] # 빈 목록에서 시작한다for i in range(n): if scores[i] < c: retake.append(i + 1) # 학생 번호는 1번부터print(len(retake))if retake: print(*retake)
JavaScriptmain.js · 13 行
const lines = require("fs").readFileSync(0, "utf8").split("\n");const [n, c] = lines[0].trim().split(/\s+/).map(Number);const scores = lines[1].trim().split(/\s+/).map(Number);const retake = []; // 빈 배열에서 시작한다for (let i = 0; i < n; i++) { if (scores[i] < c) { retake.push(i + 1); // 학생 번호는 1번부터 }}console.log(retake.length);if (retake.length > 0) { console.log(retake.join(" "));}
TypeScriptmain.ts · 14 行
import { readFileSync } from "node:fs";const lines: string[] = readFileSync(0, "utf8").split("\n");const [n, c]: number[] = lines[0].trim().split(/\s+/).map(Number);const scores: number[] = lines[1].trim().split(/\s+/).map(Number);const retake: number[] = []; // 빈 배열에서 시작한다for (let i = 0; i < n; i++) { if (scores[i] < c) { retake.push(i + 1); // 학생 번호는 1번부터 }}console.log(retake.length);if (retake.length > 0) { console.log(retake.join(" "));}
JavaMain.java · 26 行
import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(), c = sc.nextInt(); List<Integer> retake = new ArrayList<>(); // 빈 목록에서 시작한다 for (int i = 0; i < n; i++) { int score = sc.nextInt(); if (score < c) { retake.add(i + 1); // 학생 번호는 1번부터 } } System.out.println(retake.size()); if (!retake.isEmpty()) { StringBuilder line = new StringBuilder(); for (int number : retake) { if (line.length() > 0) line.append(' '); line.append(number); } System.out.println(line); } }}
C#Main.cs · 25 行
using System;using System.Collections.Generic;class Program{ static void Main() { string[] head = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries); int n = int.Parse(head[0]), c = int.Parse(head[1]); string[] parts = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries); var retake = new List<int>(); // 빈 목록에서 시작한다 for (int i = 0; i < n; i++) { if (int.Parse(parts[i]) < c) { retake.Add(i + 1); // 학생 번호는 1번부터 } } Console.WriteLine(retake.Count); if (retake.Count > 0) { Console.WriteLine(string.Join(" ", retake)); } }}
C++main.cpp · 23 行
#include <iostream>#include <vector>int main() { int n, c; std::cin >> n >> c; std::vector<int> retake; // 빈 vector에서 시작한다 for (int i = 0; i < n; i++) { int score; std::cin >> score; if (score < c) { retake.push_back(i + 1); // 학생 번호는 1번부터 } } std::cout << retake.size() << "\n"; if (!retake.empty()) { for (std::size_t k = 0; k < retake.size(); k++) { if (k > 0) std::cout << " "; std::cout << retake[k]; } std::cout << "\n"; }}
Cmain.c · 26 行
#include <stdio.h>int main(void) { int n, c; if (scanf("%d %d", &n, &c) != 2) return 0; /* C의 배열은 늘어나지 않는다: 가장 많을 때(100명)만큼 잡아 두고, 몇 칸 찼는지 따로 센다 */ int retake[100]; int count = 0; for (int i = 0; i < n; i++) { int score; if (scanf("%d", &score) != 1) return 0; if (score < c) { retake[count] = i + 1; /* 학생 번호는 1번부터 */ count++; } } printf("%d\n", count); if (count > 0) { for (int k = 0; k < count; k++) { if (k > 0) printf(" "); printf("%d", retake[k]); } printf("\n"); } return 0;}
Craykonmain.cray · 17 行
head = コンソール.数読み();n = head[0];c = head[1];scores = コンソール.数読み();retake = []; // 빈 목록에서 시작한다繰り返す (i = 0; i < n; i++){ もし (scores[i] < c) { retake.追加(i + 1); // 학생 번호는 1번부터 }}コンソール.書く(retake.個数);もし (retake.個数 > 0){ コンソール.書く(retake); // 목록은 빈칸으로 이어서 쓴다}