s = input().strip()q = int(input())out = []for k in map(int, input().split()): if k > 0: out.append(s[k - 1]) # 앞에서 k번째 → 번호는 k - 1 else: out.append(s[k]) # Python은 s[-1]이 맨 끝 글자print("".join(out))
JavaScriptmain.js · 9 行
const lines = require("fs").readFileSync(0, "utf8").split("\n");const s = lines[0].trim();const ks = lines[2].trim().split(/\s+/).map(Number);let out = "";for (const k of ks) { // s[-1]은 undefined라서 음수는 길이를 더해 번호로 바꾼다(s.at(k)도 된다) out += k > 0 ? s[k - 1] : s[s.length + k];}console.log(out);
TypeScriptmain.ts · 10 行
import { readFileSync } from "node:fs";const lines: string[] = readFileSync(0, "utf8").split("\n");const s = lines[0].trim();const ks: number[] = lines[2].trim().split(/\s+/).map(Number);let out = "";for (const k of ks) { // s[-1]은 undefined라서 음수는 길이를 더해 번호로 바꾼다(s.at(k)도 된다) out += k > 0 ? s[k - 1] : s[s.length + k];}console.log(out);
JavaMain.java · 17 行
import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String s = in.readLine().trim(); in.readLine(); StringBuilder out = new StringBuilder(); for (String t : in.readLine().trim().split("\\s+")) { int k = Integer.parseInt(t); // charAt은 0부터, 음수는 받지 않는다 → 뒤에서 세면 길이를 더한다 out.append(k > 0 ? s.charAt(k - 1) : s.charAt(s.length() + k)); } System.out.println(out); }}
C#Main.cs · 19 行
using System;using System.Text;class Program{ static void Main() { string s = Console.ReadLine().Trim(); Console.ReadLine(); var sb = new StringBuilder(); foreach (string t in Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries)) { int k = int.Parse(t); // s[^m]은 뒤에서 m번째 글자(C# 8 이후) — ^1이 맨 끝 sb.Append(k > 0 ? s[k - 1] : s[^(-k)]); } Console.WriteLine(sb); }}
C++main.cpp · 16 行
#include <iostream>#include <string>int main() { std::string s, out; int q; std::cin >> s >> q; int len = (int)s.size(); for (int i = 0; i < q; i++) { int k; std::cin >> k; // s[-1]은 정해지지 않은 동작 → 뒤에서 세면 길이를 더한다 out += k > 0 ? s[k - 1] : s[len + k]; } std::cout << out << '\n';}
Cmain.c · 19 行
#include <stdio.h>#include <string.h>int main(void) { static char s[1001]; static char out[1001]; int q; scanf("%1000s %d", s, &q); int len = (int)strlen(s); for (int i = 0; i < q; i++) { int k; scanf("%d", &k); /* C 배열은 0부터, 음수 번호는 배열 밖을 읽는다 → 길이를 더해 바꾼다 */ out[i] = k > 0 ? s[k - 1] : s[len + k]; } out[q] = '\0'; puts(out); return 0;}
Craykonmain.cray · 16 行
s = コンソール.行読み().空白除去();q = コンソール.行読み().数に();ks = コンソール.数読み();out = "";それぞれ (k の中 ks){ もし (k > 0) { out = out + s[k - 1]; // 앞에서 k번째 → 번호는 k - 1 } でなければ { out = out + s[s.長さ + k]; // s[-1]은 오류라서 길이를 더한다 }}コンソール.書く(out);