첫 줄에 질문 수 q가 주어진다. 이어서 q줄에 걸쳐 영어 단어 두 개 a, b가 빈칸 하나로 띄어 주어진다. 질문마다 a가 b보다 앞이면 -1, 같으면 0, 뒤면 1을 한 줄에 출력하라. 앞뒤는 글자 코드(ASCII)로 정한다: 첫 글자부터 차례로 비교해 처음 다른 글자의 코드가 작은 쪽이 앞이다. 이 규칙에서는 대문자(A~Z, 65~90)가 모두 소문자(a~z, 97~122)보다 앞이라 "Zoo"가 "apple"보다 앞이다. 한 단어가 다른 단어의 앞부분과 같으면("app"과 "apple") 짧은 쪽이 앞이다.
입력
1 ≤ q ≤ 1,000. 단어는 영어 대문자·소문자, 길이 1 ~ 20
출력
q줄, 질문마다 -1, 0, 1 중 하나
예시 1 · stdin
4
apple banana
app apple
Zoo apple
same same
stdout
-1
-1
-1
0
main.py
오류 목록00F8 ↓ · ⇧F8 ↑
입력(stdin)
실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).
$ 준비됐어요
코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.
다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이
문자열 크기 비교: Python·JS·TS·C++·크레이콘은 a < b를 바로 써요(모두 글자 코드 순). Java a.compareTo(b), C strcmp(a, b), C++ a.compare(b), C# string.Compare(a, b, StringComparison.Ordinal)은 음수·0·양수를 돌려주는데, -1과 1이라는 약속은 없어요. Java compareTo는 처음 다른 글자의 코드 차이("a"와 "c"는 -2)나 길이 차이를 주고, C strcmp도 구현에 따라 글자 차이를 줘요. 그래서 Integer.signum·Math.Sign·(r > 0) - (r < 0)으로 부호만 남겨요. Python에는 세 갈래 비교 함수가 없어서 (a > b) - (a < b)로 만들어요. 대소문자 함정: C# string.Compare(a, b)(StringComparison 없이)는 문화권 규칙이라 "a"가 "B"보다 앞이 되고, JS a.localeCompare(b)도 마찬가지예요. 글자 코드 순서를 원하면 C#은 Ordinal, JS는 <를 써요.
Pythonmain.py · 4 줄
q = int(input())for _ in range(q): a, b = input().split() print((a > b) - (a < b))
JavaScriptmain.js · 7 줄
const [q, ...lines] = require("fs").readFileSync(0, "utf8").split("\n").map((x) => x.trim());const out = [];for (let i = 0; i < Number(q); i++) { const [a, b] = lines[i].split(" "); out.push(a < b ? -1 : a > b ? 1 : 0);}console.log(out.join("\n"));
TypeScriptmain.ts · 8 줄
import { readFileSync } from "node:fs";const [q, ...lines]: string[] = readFileSync(0, "utf8").split("\n").map((x) => x.trim());const out: number[] = [];for (let i = 0; i < Number(q); i++) { const [a, b]: string[] = lines[i].split(" "); out.push(a < b ? -1 : a > b ? 1 : 0);}console.log(out.join("\n"));
JavaMain.java · 16 줄
import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int q = Integer.parseInt(br.readLine().trim()); StringBuilder out = new StringBuilder(); for (int i = 0; i < q; i++) { String[] p = br.readLine().trim().split(" "); // compareTo는 -1/1이 아니라 "차이"를 돌려주므로 부호만 남긴다 out.append(Integer.signum(p[0].compareTo(p[1]))).append('\n'); } System.out.print(out); }}
C#Main.cs · 18 줄
using System;using System.Text;class Program{ static void Main() { int q = int.Parse(Console.ReadLine()); var out_ = new StringBuilder(); for (int i = 0; i < q; i++) { string[] p = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries); // 글자 코드로 비교하려면 Ordinal(기본 string.Compare는 문화권 규칙을 따른다) out_.Append(Math.Sign(string.Compare(p[0], p[1], StringComparison.Ordinal))).Append('\n'); } Console.Write(out_); }}
C++main.cpp · 13 줄
#include <iostream>#include <string>int main() { std::ios::sync_with_stdio(false); int q; std::string a, b; std::cin >> q; for (int i = 0; i < q; i++) { std::cin >> a >> b; std::cout << (a < b ? -1 : a > b ? 1 : 0) << '\n'; }}
Cmain.c · 14 줄
#include <stdio.h>#include <string.h>int main(void) { int q; char a[32], b[32]; if (scanf("%d", &q) != 1) return 0; for (int i = 0; i < q; i++) { scanf("%31s %31s", a, b); int r = strcmp(a, b); /* 부호만 정해져 있다: 음수, 0, 양수 */ printf("%d\n", (r > 0) - (r < 0)); } return 0;}
Craykonmain.cray · 19 줄
q = 콘솔.줄읽기().수로변환();반복 (i = 0; i < q; i++){ words = 콘솔.줄읽기().나누기(); a = words[0]; b = words[1]; 만약 (a < b) { 콘솔.쓰기(-1); } 아니면 만약 (a > b) { 콘솔.쓰기(1); } 아니면 { 콘솔.쓰기(0); }}