{ }codelper
여러 갈래 조건P0315

연 날리기 알림판

연 날리기 모임은 날마다 풍속 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 가운데 하나
예시 1 · stdin
7
3 80 10
15 80 20
15 10 20
2 10 -5
9 10 -5
9 10 5
5 69 0
stdout
비
비
강풍
잔잔
추위
곡예
연
main.py
입력(stdin)

실행하면 이 줄들이 차례로 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)    {        콘솔.쓰기("곡예");    }    아니면    {        콘솔.쓰기("연");    }}