연 날리기 모임은 날마다 풍속 w, 비 올 확률 p, 기온 t를 보고 알림판에 낱말 하나를 적는다.
첫 줄에 날 수 n이, 다음 n개의 줄에 날마다 w, p, t가 이 차례로 빈칸 하나씩 띄워 주어진다.
아래 규칙을 위에서부터 차례로 살펴, 처음으로 맞는 규칙의 낱말 하나만 적는다.
규칙 1: p가 70 이상이면 "비"이다.
규칙 2: w가 12 이상이면 "강풍"이다.
규칙 3: w가 3 미만이면 "잔잔"이다.
규칙 4: t가 0 미만이면 "추위"이다.
규칙 5: w가 8 이상이면 "곡예"이다.
규칙 6: 위의 어느 것에도 맞지 않으면 "연"이다.
날마다 한 줄씩, 주어진 차례대로 알림판에 적을 낱말을 출력하라.
입력
1 ≤ n ≤ 1000, 0 ≤ w ≤ 40, 0 ≤ p ≤ 100, −30 ≤ t ≤ 45(모두 정수)
출력
n개의 줄. 줄마다 rain · storm · calm · cold · stunt · kite 가운데 하나
실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).
$ 준비됐어요
코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.
다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이
여러 갈래 가운데 하나만 고르는 사슬을 Python은 if … elif … else, C·C++·Java·C#·JS·TS는 if … else if … else, 크레이콘은 만약 … 아니면 만약 … 아니면으로 써요. Python만 elif라는 낱말이 따로 있고, 나머지는 else 뒤에 if를 이어 붙인 것이에요. 사슬은 위에서부터 묻다가 처음 맞은 갈래만 하고 나머지는 건너뛰어요. 첫째 함정은 묻는 차례예요. 이 문제는 조건이 서로 겹쳐서 차례가 곧 규칙이에요. 바람부터 물으면 15 80 20이 rain이 아니라 storm이 돼요. 바람 조건끼리 모으느라 곡예를 추위보다 먼저 물으면 9 10 -5가 cold가 아니라 stunt가 돼요. 둘째 함정은 else 없이 if를 따로따로 쓰는 것이에요. 맞는 조건마다 다 찍혀서 15 80 20에 rain, storm, stunt 세 줄이 나오고, 마지막 else는 바로 앞 if에만 붙어서 3 80 10에는 rain 뒤에 kite까지 찍혀요. 가운데 하나만 아니면 만약 대신 만약으로 써도 사슬이 거기서 둘로 끊겨요. 둘째 조건을 그렇게 쓰면 15 80 20에 rain과 storm 두 줄이 찍혀요. 찍는 대신 변수에 답을 덮어쓰면 마지막에 맞은 것이 남아서 2 10 -5가 calm이 아니라 cold가 돼요. 셋째 함정은 경계예요. 이상은 >=, 미만은 <예요. p > 70이라고 쓰면 비 올 확률이 딱 70인 날을, w <= 3이라고 쓰면 풍속이 딱 3인 날을, t <= 0이라고 쓰면 기온이 딱 0인 날을 틀려요. 예시의 5 69 0은 kite인데 t <= 0이면 cold가 돼요. 앞 갈래에서 이미 걸러졌으므로 뒤 조건에 w >= 3 && w < 12처럼 다시 적을 필요는 없어요.
Pythonmain.py · 16 줄
n = int(input())for _ in range(n): w, p, t = map(int, input().split()) # 위에서부터 차례로 묻는다. 먼저 맞은 하나만 고른다 if p >= 70: print("비") elif w >= 12: print("강풍") elif w < 3: print("잔잔") elif t < 0: print("추위") elif w >= 8: print("곡예") else: print("연")
JavaScriptmain.js · 22 줄
const [n, ...v] = require("fs").readFileSync(0, "utf8").trim().split(/\s+/).map(Number);const out = [];for (let i = 0; i < n; i++) { const w = v[3 * i]; const p = v[3 * i + 1]; const t = v[3 * i + 2]; // 위에서부터 차례로 묻는다. 먼저 맞은 하나만 고른다 if (p >= 70) { out.push("비"); } else if (w >= 12) { out.push("강풍"); } else if (w < 3) { out.push("잔잔"); } else if (t < 0) { out.push("추위"); } else if (w >= 8) { out.push("곡예"); } else { out.push("연"); }}console.log(out.join("\n"));
TypeScriptmain.ts · 23 줄
import { readFileSync } from "node:fs";const [n, ...v]: number[] = readFileSync(0, "utf8").trim().split(/\s+/).map(Number);const out: string[] = [];for (let i = 0; i < n; i++) { const w: number = v[3 * i]; const p: number = v[3 * i + 1]; const t: number = v[3 * i + 2]; // 위에서부터 차례로 묻는다. 먼저 맞은 하나만 고른다 if (p >= 70) { out.push("비"); } else if (w >= 12) { out.push("강풍"); } else if (w < 3) { out.push("잔잔"); } else if (t < 0) { out.push("추위"); } else if (w >= 8) { out.push("곡예"); } else { out.push("연"); }}console.log(out.join("\n"));
JavaMain.java · 30 줄
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); StringBuilder out = new StringBuilder(); for (int i = 0; i < n; i++) { int w = sc.nextInt(); int p = sc.nextInt(); int t = sc.nextInt(); // 위에서부터 차례로 묻는다. 먼저 맞은 하나만 고른다 if (p >= 70) { out.append("비"); } else if (w >= 12) { out.append("강풍"); } else if (w < 3) { out.append("잔잔"); } else if (t < 0) { out.append("추위"); } else if (w >= 8) { out.append("곡예"); } else { out.append("연"); } out.append('\n'); } System.out.print(out); }}
C#Main.cs · 45 줄
using System;using System.Text;class Program{ static void Main() { int n = int.Parse(Console.ReadLine()); var sb = new StringBuilder(); for (int i = 0; i < n; i++) { string[] s = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries); int w = int.Parse(s[0]); int p = int.Parse(s[1]); int t = int.Parse(s[2]); // 위에서부터 차례로 묻는다. 먼저 맞은 하나만 고른다 if (p >= 70) { sb.Append("비"); } else if (w >= 12) { sb.Append("강풍"); } else if (w < 3) { sb.Append("잔잔"); } else if (t < 0) { sb.Append("추위"); } else if (w >= 8) { sb.Append("곡예"); } else { sb.Append("연"); } sb.Append('\n'); } Console.Write(sb); }}
C++main.cpp · 24 줄
#include <iostream>int main() { int n; std::cin >> n; for (int i = 0; i < n; i++) { int w, p, t; std::cin >> w >> p >> t; // 위에서부터 차례로 묻는다. 먼저 맞은 하나만 고른다 if (p >= 70) { std::cout << "비" << "\n"; } else if (w >= 12) { std::cout << "강풍" << "\n"; } else if (w < 3) { std::cout << "잔잔" << "\n"; } else if (t < 0) { std::cout << "추위" << "\n"; } else if (w >= 8) { std::cout << "곡예" << "\n"; } else { std::cout << "연" << "\n"; } }}
Cmain.c · 25 줄
#include <stdio.h>int main(void) { int n; scanf("%d", &n); for (int i = 0; i < n; i++) { int w, p, t; scanf("%d %d %d", &w, &p, &t); /* 위에서부터 차례로 묻는다. 먼저 맞은 하나만 고른다 */ if (p >= 70) { puts("비"); } else if (w >= 12) { puts("강풍"); } else if (w < 3) { puts("잔잔"); } else if (t < 0) { puts("추위"); } else if (w >= 8) { puts("곡예"); } else { puts("연"); } } return 0;}
Craykonmain.cray · 33 줄
n = 콘솔.줄읽기().수로변환();반복 (i = 0; i < n; i++){ 날 = 콘솔.수들읽기(); w = 날[0]; p = 날[1]; t = 날[2]; // 위에서부터 차례로 묻는다. 먼저 맞은 하나만 고른다 만약 (p >= 70) { 콘솔.쓰기("비"); } 아니면 만약 (w >= 12) { 콘솔.쓰기("강풍"); } 아니면 만약 (w < 3) { 콘솔.쓰기("잔잔"); } 아니면 만약 (t < 0) { 콘솔.쓰기("추위"); } 아니면 만약 (w >= 8) { 콘솔.쓰기("곡예"); } 아니면 { 콘솔.쓰기("연"); }}