사흘 동안의 낮 최고 기온을 보고 기온의 흐름을 적는다.
첫 줄에 기록 수 n이, 다음 n줄에 기록마다 첫날·둘째 날·셋째 날의 기온 a, b, c가 차례로 빈칸 하나씩 띄워 주어진다.
기록마다 한 줄에, a < b < c이면 "오름", a > b > c이면 "내림", 그 밖이면 "섞임"를 출력하라.
이틀 이상 기온이 같으면 점점 오른 것도 점점 내린 것도 아니므로 "섞임"다(예: 3 3 5).
오르다가 내리거나 내리다가 오르는 것도 "섞임"다.
입력
1 ≤ n ≤ 1,000, −50 ≤ a, b, c ≤ 50(정수)
출력
n줄, 줄마다 up · down · mixed 가운데 하나
예시 1 · stdin
4
3 8 12
12 8 3
5 9 2
4 4 6
stdout
오름
내림
섞임
섞임
main.py
오류 목록00F8 ↓ · ⇧F8 ↑
입력(stdin)
실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).
$ 준비됐어요
코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.
다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이
수학처럼 a < b < c라고 쓸 수 있는지가 언어마다 달라요. Python만 이것을 a < b and b < c로 읽어 줘요. JS에서는 오류 없이 (a < b) < c로 계산되고, C·C++도 gcc에서는 그대로 컴파일되어 그렇게 계산해요(-Wall을 주어야 경고가 나와요. 최신 clang은 기본으로 오류로 막아요). 앞의 비교 결과 true·false가 1·0이 되어 c와 비교되니, 5 9 2처럼 오르다 내린 기록도 c가 1보다 크면 up이 돼요. Java·C#은 boolean과 int를 비교할 수 없다는 컴파일 오류를 내고, TS도 boolean과 number는 비교할 수 없다는 타입 오류로 막아 줘요. 크레이콘은 실행하기 전에 'a < b && b < c처럼 둘로 나눠 써요'라고 알려 줘요. 그래서 Python 말고는 a < b && b < c처럼 둘로 나눠 써요. 두 번째 함정은 경계예요. < 대신 <=를 쓰면 3 3 5가 up이 돼요. 세 번째 함정은 읽은 문자열을 수로 바꾸지 않는 것이에요. Python input().split()이나 JS split(" ")로 나눈 값은 문자열이라, 비교가 글자 차례로 되어 "9" < "10"이 거짓이 돼요. Python int, JS·TS Number, 크레이콘 수로변환으로 바꾼 다음 비교해요.
Pythonmain.py · 10 줄
n = int(input())for _ in range(n): a, b, c = map(int, input().split()) # Python은 a < b < c를 a < b and b < c로 읽는다 if a < b < c: print("오름") elif a > b > c: print("내림") else: print("섞임")
JavaScriptmain.js · 11 줄
const lines = require("fs").readFileSync(0, "utf8").split("\n");const n = Number(lines[0]);const out = [];for (let i = 1; i <= n; i++) { const [a, b, c] = lines[i].trim().split(/\s+/).map(Number); // a < b < c는 (a < b) < c가 되어 true/false를 c와 비교한다. 둘로 나눠 쓴다 if (a < b && b < c) out.push("오름"); else if (a > b && b > c) out.push("내림"); else out.push("섞임");}console.log(out.join("\n"));
TypeScriptmain.ts · 12 줄
import { readFileSync } from "node:fs";const lines: string[] = readFileSync(0, "utf8").split("\n");const n: number = Number(lines[0]);const out: string[] = [];for (let i = 1; i <= n; i++) { const [a, b, c]: number[] = lines[i].trim().split(/\s+/).map(Number); // TS는 a < b < c를 타입 오류로 막는다(boolean과 number를 비교). 둘로 나눠 쓴다 if (a < b && b < c) out.push("오름"); else if (a > b && b > c) out.push("내림"); else out.push("섞임");}console.log(out.join("\n"));
JavaMain.java · 22 줄
import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine().trim()); StringBuilder out = new StringBuilder(); for (int i = 0; i < n; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); int c = Integer.parseInt(st.nextToken()); // a < b < c는 컴파일 오류다(boolean과 int는 비교할 수 없다) if (a < b && b < c) out.append("오름\n"); else if (a > b && b > c) out.append("내림\n"); else out.append("섞임\n"); } System.out.print(out); }}
C#Main.cs · 21 줄
using System;using System.Text;class Program{ static void Main() { int n = int.Parse(Console.ReadLine().Trim()); var sb = new StringBuilder(); for (int i = 0; i < n; i++) { string[] p = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries); int a = int.Parse(p[0]), b = int.Parse(p[1]), c = int.Parse(p[2]); // a < b < c는 컴파일 오류다. 둘로 나눠 &&로 잇는다 if (a < b && b < c) sb.Append("오름\n"); else if (a > b && b > c) sb.Append("내림\n"); else sb.Append("섞임\n"); } Console.Write(sb); }}
C++main.cpp · 15 줄
#include <iostream>int main() { std::ios::sync_with_stdio(false); int n; std::cin >> n; for (int i = 0; i < n; i++) { int a, b, c; std::cin >> a >> b >> c; // a < b < c도 컴파일되지만 (a < b)의 true/false를 c와 비교한다 if (a < b && b < c) std::cout << "오름\n"; else if (a > b && b > c) std::cout << "내림\n"; else std::cout << "섞임\n"; }}
Cmain.c · 15 줄
#include <stdio.h>int main(void) { int n; scanf("%d", &n); for (int i = 0; i < n; i++) { int a, b, c; scanf("%d %d %d", &a, &b, &c); /* a < b < c도 컴파일되지만 (a < b)의 1이나 0을 c와 비교한다 */ if (a < b && b < c) puts("오름"); else if (a > b && b > c) puts("내림"); else puts("섞임"); } return 0;}
Craykonmain.cray · 21 줄
n = 콘솔.줄읽기().수로변환();반복 (i = 0; i < n; i++){ p = 콘솔.줄읽기().공백제거().나누기(" "); a = p[0].수로변환(); b = p[1].수로변환(); c = p[2].수로변환(); // a < b < c는 (a < b)의 참거짓을 c와 비교한다. 둘로 나눠 &&로 잇는다 만약 (a < b && b < c) { 콘솔.쓰기("오름"); } 아니면 만약 (a > b && b > c) { 콘솔.쓰기("내림"); } 아니면 { 콘솔.쓰기("섞임"); }}