수를 거꾸로 적는 놀이를 한다.
첫 줄에 수의 개수 n이, 다음 n줄에 정수가 하나씩 주어진다.
정수마다 숫자의 차례를 맨 끝부터 맨 앞까지 거꾸로 뒤집어 한 줄에 출력하라.
음수이면 맨 앞의 - 부호는 뒤집지 않고 그대로 맨 앞에 둔다(-45 → -54).
뒤집어서 맨 앞에 오게 된 0도 지우지 않고 모두 쓴다(120 → 021, -100 → -001).
0은 그대로 0이다.
입력
1 ≤ n ≤ 100. 정수는 -10^18보다 크고 10^18보다 작다(숫자는 18개까지). 0이 아닌 정수는 0으로 시작하지 않고, 0은 "0"으로만 쓰며 "-0"은 없다. 줄에는 정수 말고 다른 글자가 없다
출력
n줄, 줄마다 거꾸로 쓴 수(부호는 맨 앞, 앞에 온 0도 그대로)
예시 1 · stdin
4
120
-45
7
-100
stdout
021
-54
7
-001
main.py
오류 목록00F8 ↓ · ⇧F8 ↑
입력(stdin)
실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).
$ 준비됐어요
코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.
다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이
수로 바꾸지 말고 문자열 그대로 뒤집는 것이 핵심이에요. x % 10을 모아 수를 다시 만들거나 int(s[::-1])처럼 뒤집은 것을 수로 바꾸면 앞에 온 0이 사라져 120이 21, -100이 -1이 돼요. 수가 21억을 넘어서 C·Java·C#의 int로는 받을 수도 없고, JS·TS·크레이콘은 수가 실수(double)라 Number("123456789012345678")이 이미 123456789012345680으로 바뀌어요. 뒤집는 법은 언어마다 달라요. Python s[::-1], JS·TS [...s].reverse().join("")(문자열에는 reverse가 없어 배열로 바꿔요), Java new StringBuilder(s).reverse(), C# char[]로 바꿔 Array.Reverse 한 뒤 new string(a), C++ std::reverse(s.begin(), s.end()), 크레이콘 s.뒤집기()예요. C에는 뒤집는 함수가 없어서 양 끝 글자를 맞바꾸며 가운데로 오는 반복문을 써요. 부호는 따로 다뤄요. 첫 글자가 -이면 떼어 두고 나머지(Python s[1:], Java·C# s.substring(1)·s.Substring(1), 크레이콘 s.부분문자열(1))만 뒤집어 앞에 다시 붙여요. C·C++는 뒤집기를 1번 칸부터 시작하면 돼요. 통째로 뒤집으면 -45가 54-가 돼요.
Pythonmain.py · 8 줄
n = int(input())for _ in range(n): s = input().strip() # 수로 바꾸지 않고 문자열 그대로 뒤집는다(앞에 온 0을 지키려고) if s[0] == "-": print("-" + s[1:][::-1]) else: print(s[::-1])
JavaScriptmain.js · 10 줄
const [n, ...lines] = require("fs").readFileSync(0, "utf8").trim().split(/\s+/);const out = [];for (const s of lines) { // Number로 바꾸면 2^53을 넘는 수가 바뀌고 앞의 0도 사라진다: 문자열 그대로 const neg = s.startsWith("-"); const digits = neg ? s.slice(1) : s; const rev = [...digits].reverse().join(""); out.push(neg ? "-" + rev : rev);}console.log(out.join("\n"));
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)); int n = Integer.parseInt(in.readLine().trim()); StringBuilder out = new StringBuilder(); for (int i = 0; i < n; i++) { String s = in.readLine().trim(); if (s.startsWith("-")) { out.append('-').append(new StringBuilder(s.substring(1)).reverse()); } else { out.append(new StringBuilder(s).reverse()); } out.append('\n'); } System.out.print(out); }}
C#Main.cs · 26 줄
using System;using System.Text;class Program{ static string Reverse(string s) { char[] a = s.ToCharArray(); Array.Reverse(a); return new string(a); } static void Main() { int n = int.Parse(Console.ReadLine().Trim()); var sb = new StringBuilder(); for (int i = 0; i < n; i++) { string s = Console.ReadLine().Trim(); if (s.StartsWith("-")) sb.Append('-').Append(Reverse(s.Substring(1))); else sb.Append(Reverse(s)); sb.Append('\n'); } Console.Write(sb); }}
C++main.cpp · 16 줄
#include <algorithm>#include <iostream>#include <string>int main() { int n; std::cin >> n; for (int k = 0; k < n; k++) { std::string s; std::cin >> s; // 부호가 있으면 둘째 글자부터 끝까지만 뒤집는다 auto from = (s[0] == '-') ? s.begin() + 1 : s.begin(); std::reverse(from, s.end()); std::cout << s << "\n"; }}
Cmain.c · 23 줄
#include <stdio.h>#include <string.h>int main(void) { int n; char s[32]; scanf("%d", &n); for (int k = 0; k < n; k++) { scanf("%31s", s); /* 부호가 있으면 1번 칸부터 뒤집는다 */ int i = (s[0] == '-') ? 1 : 0; int j = (int)strlen(s) - 1; while (i < j) { char t = s[i]; s[i] = s[j]; s[j] = t; i++; j--; } puts(s); } return 0;}
Craykonmain.cray · 14 줄
n = 콘솔.줄읽기().수로변환();반복 (i = 0; i < n; i++){ s = 콘솔.줄읽기().공백제거(); // 수로 바꾸지 않는다: 앞에 온 0이 사라지고, 2^53보다 큰 수는 바뀐다 만약 (s.시작하나("-")) { 콘솔.쓰기("-" + s.부분문자열(1).뒤집기()); } 아니면 { 콘솔.쓰기(s.뒤집기()); }}