온도계가 n번 잰 값을 차례로 기록했는데, 재지 못한 때는 빈 줄로 남았다. 첫 줄에 n이 주어지고, 다음 n줄은 각각 정수 하나이거나 빈 줄(빈칸도 없는 줄)이다. 줄마다 결과를 한 줄씩 출력하라: 정수가 있으면 그 수를, 빈 줄이면 그 앞에서 가장 최근에 기록된 수를 쓴다. 앞에 기록된 수가 하나도 없으면 "없음"을 쓴다. 0과 음수도 기록된 수다.
입력
1 ≤ n ≤ 1,000, -1,000 ≤ 기록된 수 ≤ 1,000
출력
n줄, 수 또는 "없음"
예시 1 · stdin
5
3
0
stdout
없음
3
3
0
0
예시 2 · stdin
3
-1
stdout
-1
-1
-1
main.py
오류 목록00F8 ↓ · ⇧F8 ↑
입력(stdin)
실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).
$ 준비됐어요
코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.
다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이
'아직 값이 없음'을 담는 방법이 언어마다 달라요. Python None(last is None으로 확인), JS null, TS number | null(엄격 모드에서는 확인하기 전에 수로 못 써요), Java는 int에 null을 못 담아서 Integer(null인 채로 계산하면 NullPointerException), C#은 int?(HasValue, ??), C++17은 std::optional<int>, 크레이콘은 빈값. C의 int에는 '없음'이 아예 없어서 bool has = false(<stdbool.h>) 같은 참·거짓 하나를 따로 둬요. 함정 셋: ① '없음'을 0이나 -1 같은 특별한 수로 대신하면 진짜 0·-1과 구별이 안 돼요(예시 2). ② if (last)·if last:처럼 참·거짓으로 물으면 JS와 Python은 0도 거짓으로 봐서 0을 읽은 뒤에 "none"이 나와요 — last === null, last is None처럼 null인지 따로 물어요. ③ 빈 줄은 null이 아니라 빈 문자열 ""이에요(크레이콘 콘솔.줄읽기()도 빈 줄이면 "", 입력이 끝나야 빈값). 이것을 바로 수로 바꾸면 Python int("")는 ValueError, Java Integer.parseInt("")는 NumberFormatException으로 멈추고, JS Number("")와 C atoi("")는 조용히 0이 돼요. 그래서 수로 바꾸기 전에 빈 줄인지 먼저 글자로 확인해요.
Pythonmain.py · 7 줄
n = int(input())last = None # 아직 읽은 수가 없음for _ in range(n): line = input() if line != "": last = int(line) print("없음" if last is None else last)
JavaScriptmain.js · 10 줄
const lines = require("fs").readFileSync(0, "utf8").split("\n");const n = Number(lines[0]);let last = null; // 아직 읽은 수가 없음const out = [];for (let i = 1; i <= n; i++) { // Number("")는 0이라서 빈 줄인지 먼저 글자로 확인한다 if (lines[i] !== "") last = Number(lines[i]); out.push(last === null ? "없음" : last);}console.log(out.join("\n"));
TypeScriptmain.ts · 11 줄
import { readFileSync } from "node:fs";const lines: string[] = readFileSync(0, "utf8").split("\n");const n: number = Number(lines[0]);let last: number | null = null; // 아직 읽은 수가 없음const out: string[] = [];for (let i = 1; i <= n; i++) { // Number("")는 0이라서 빈 줄인지 먼저 글자로 확인한다 if (lines[i] !== "") last = Number(lines[i]); out.push(last === null ? "없음" : String(last));}console.log(out.join("\n"));
JavaMain.java · 18 줄
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(in.readLine().trim()); Integer last = null; // int는 null을 담을 수 없어 Integer를 쓴다 StringBuilder out = new StringBuilder(); for (int i = 0; i < n; i++) { String line = in.readLine(); if (!line.isEmpty()) last = Integer.parseInt(line); out.append(last == null ? "없음" : last.toString()).append('\n'); } System.out.print(out); }}
C#Main.cs · 19 줄
using System;using System.Text;class Program{ static void Main() { int n = int.Parse(Console.ReadLine()); int? last = null; // int? 는 null도 담는 int var out_ = new StringBuilder(); for (int i = 0; i < n; i++) { string line = Console.ReadLine(); if (line != "") last = int.Parse(line); out_.Append(last.HasValue ? last.Value.ToString() : "없음").Append('\n'); } Console.Write(out_); }}
C++main.cpp · 16 줄
#include <iostream>#include <optional>#include <string>int main() { std::string line; std::getline(std::cin, line); int n = std::stoi(line); std::optional<int> last; // 처음에는 값이 없음 for (int i = 0; i < n; i++) { std::getline(std::cin, line); if (!line.empty()) last = std::stoi(line); if (last) std::cout << *last << '\n'; else std::cout << "없음\n"; }}
Cmain.c · 22 줄
#include <stdbool.h>#include <stdio.h>#include <stdlib.h>int main(void) { char line[32]; fgets(line, sizeof line, stdin); int n = atoi(line); /* C의 int에는 '값 없음'이 없어서 따로 참·거짓 하나를 둔다 */ bool has = false; int last = 0; for (int i = 0; i < n; i++) { fgets(line, sizeof line, stdin); if (line[0] != '\n' && line[0] != '\0') { last = atoi(line); has = true; } if (has) printf("%d\n", last); else puts("없음"); } return 0;}
Craykonmain.cray · 18 줄
n = 콘솔.줄읽기().수로변환();마지막 = 빈값;반복 (i = 0; i < n; i++){ 줄 = 콘솔.줄읽기(); 만약 (줄 != "") { 마지막 = 줄.수로변환(); } 만약 (마지막 == 빈값) { 콘솔.쓰기("없음"); } 아니면 { 콘솔.쓰기(마지막); }}