사진을 한 변이 S인 정사각형 액자에 넣으려고 한다.
사진은 가로와 세로의 비율을 지킨 채 크기를 바꾸고, 긴 변의 길이가 정확히 S가 되게 한다.
사진이 액자보다 작으면 늘리고, 크면 줄인다.
한 줄에 S, 사진의 가로 w, 세로 h가 빈칸 하나씩 띄워 주어진다.
w가 h보다 크거나 같으면 새 가로는 S이고, 새 세로는 h × S를 w로 나눈 몫이다.
그렇지 않으면 새 세로는 S이고, 새 가로는 w × S를 h로 나눈 몫이다.
몫은 나눗셈에서 소수 부분을 버린 정수다(반올림하지 않는다).
새 가로와 새 세로를 이 차례로 빈칸 하나로 띄워 한 줄에 출력하라.
입력
1 ≤ S, w, h ≤ 10,000(정수). 긴 변은 짧은 변의 S배를 넘지 않는다(그래서 새 짧은 변은 1 이상이다)
출력
한 줄에 새 가로와 새 세로(정수 두 개)
예시 1 · stdin
1080 4000 3000
stdout
1080 810
예시 2 · stdin
500 600 900
stdout
333 500
main.py
오류 목록00F8 ↓ · ⇧F8 ↑
입력(stdin)
실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).
$ 준비됐어요
코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.
다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이
두 갈래 가운데 하나만 고르는 if-else 문제예요. 쓰는 모양: Python if w >= h: … else:(콜론과 들여쓰기가 문법), C·C++·Java·C#·JS·TS if (w >= h) { … } else { … }, 크레이콘 만약 (w >= h) { … } 아니면 { … }. 조건을 빼먹고 가로가 늘 긴 변이라고 여기면 세로 사진(600 × 900)이 500 × 750이 되어 액자를 넘쳐요. 갈래 안의 계산에도 함정이 있어요. 첫째, 곱하기를 먼저 해요. C·C++·Java·C#의 int /는 몫만 남겨서 h / w * S라고 쓰면 3000 / 4000이 먼저 0이 되어 답이 0이에요. 둘째, 몫만 남기는 방법이 달라요. C 계열은 int끼리 /로 되지만, Python은 //(/는 810.0을 찍어요), JS·TS는 Math.floor(h * S / w), 크레이콘은 수학.몫(h * S, w)예요. Math.round처럼 반올림하면 200 / 3 = 66.67이 67이 되어 틀려요. 곱한 값은 1억을 넘지 않아 32비트 int로 충분해요. 정사각형 사진(w = h)은 어느 갈래로 가도 S S예요.
Pythonmain.py · 6 줄
S, w, h = map(int, input().split())# 곱하기를 먼저 하고 //로 몫만 남긴다if w >= h: print(S, h * S // w)else: print(w * S // h, S)
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int S = sc.nextInt(); int w = sc.nextInt(); int h = sc.nextInt(); if (w >= h) { System.out.println(S + " " + h * S / w); } else { System.out.println(w * S / h + " " + S); } }}
C#Main.cs · 20 줄
using System;class Program{ static void Main() { string[] p = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries); int S = int.Parse(p[0]); int w = int.Parse(p[1]); int h = int.Parse(p[2]); if (w >= h) { Console.WriteLine($"{S} {h * S / w}"); } else { Console.WriteLine($"{w * S / h} {S}"); } }}
C++main.cpp · 11 줄
#include <iostream>int main() { int S, w, h; std::cin >> S >> w >> h; if (w >= h) { std::cout << S << " " << h * S / w << "\n"; } else { std::cout << w * S / h << " " << S << "\n"; }}
Cmain.c · 13 줄
#include <stdio.h>int main(void) { int S, w, h; scanf("%d %d %d", &S, &w, &h); /* 곱해도 1억까지라 int로 충분하다 */ if (w >= h) { printf("%d %d\n", S, h * S / w); } else { printf("%d %d\n", w * S / h, S); } return 0;}