기차역 물품 보관함의 기본 요금은 b원이다.
짐을 맡긴 시간이 h시간 이하이면 추가 요금이 없다(0원).
맡긴 시간이 h시간보다 길면 추가 요금 e원을 한 번만 더 낸다.
첫 줄에 b, h, e가 빈칸 하나로 띄워 주어진다.
둘째 줄에 손님 수 n이 주어진다.
다음 n줄에 손님마다 짐을 맡긴 시간 t가 한 줄에 하나씩 주어진다.
손님마다 내야 할 요금(기본 요금 + 추가 요금)을 입력 차례대로 한 줄에 하나씩 출력하라.
입력
1 ≤ b ≤ 10,000, 1 ≤ h ≤ 100, 1 ≤ e ≤ 10,000, 1 ≤ n ≤ 100, 1 ≤ t ≤ 200(모두 정수)
출력
n줄에 손님마다 요금을 하나씩. 쉼표나 단위 없이 숫자만 쓴다
예시 1 · stdin
1000 3 500
3
2
3
5
stdout
1000
1000
1500
예시 2 · stdin
700 24 700
2
24
25
stdout
700
1400
main.py
오류 목록00F8 ↓ · ⇧F8 ↑
입력(stdin)
실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).
$ 준비됐어요
코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.
다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이
삼항 연산자는 두 값 가운데 하나를 골라 주는 식이라서 덧셈 안에 바로 넣을 수 있어요. C·C++·Java·C#·JS·TS·크레이콘은 조건 ? 참일 때 값 : 거짓일 때 값 차례라서 b + (t <= h ? 0 : e)로 쓰고, Python만 참일 때 값 if 조건 else 거짓일 때 값 차례라서 b + (0 if t <= h else e)로 써요. 함정 하나: 괄호를 빼면 +가 먼저 묶여요. C·C++·Java·C#·JS·TS·크레이콘에서 b + t <= h ? 0 : e는 (b + t <= h) ? 0 : e로 읽혀서 요금이 0 아니면 e가 돼요(예시 1이 500 500 500). Python에서 b + 0 if t <= h else e는 (b + 0) if t <= h else e로 읽혀서 시간을 넘긴 손님이 e만 내요(예시 1이 1000 1000 500). 함정 둘: 삼항 연산자 대신 JS (t <= h && 0) || e나 Python t <= h and 0 or e로 흉내 내면, 앞의 값 0이 거짓으로 여겨져서 조건이 참이어도 e가 나와요(예시 1이 1500 1500 1500). 함정 셋: 'h시간 이하'는 <=예요. <로 쓰면 딱 h시간 맡긴 손님도 추가 요금을 내요(예시 1이 1000 1500 1500).
Pythonmain.py · 7 줄
b, h, e = map(int, input().split())n = int(input())for _ in range(n): t = int(input()) # 값 if 조건 else 값 — 덧셈 안에 넣을 때는 괄호로 묶는다 fee = b + (0 if t <= h else e) print(fee)
JavaScriptmain.js · 10 줄
const nums = require("fs").readFileSync(0, "utf8").trim().split(/\s+/).map(Number);const [b, h, e, n] = nums;const out = [];for (let i = 0; i < n; i++) { const t = nums[4 + i]; // 조건 ? 값 : 값 — 덧셈 안에 넣을 때는 괄호로 묶는다 const fee = b + (t <= h ? 0 : e); out.push(fee);}console.log(out.join("\n"));
TypeScriptmain.ts · 11 줄
import { readFileSync } from "node:fs";const nums: number[] = readFileSync(0, "utf8").trim().split(/\s+/).map(Number);const [b, h, e, n] = nums;const out: number[] = [];for (let i = 0; i < n; i++) { const t: number = nums[4 + i]; // 조건 ? 값 : 값 — 덧셈 안에 넣을 때는 괄호로 묶는다 const fee: number = b + (t <= h ? 0 : e); out.push(fee);}console.log(out.join("\n"));
JavaMain.java · 15 줄
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int b = sc.nextInt(), h = sc.nextInt(), e = sc.nextInt(); int n = sc.nextInt(); for (int i = 0; i < n; i++) { int t = sc.nextInt(); // 조건 ? 값 : 값 — 덧셈 안에 넣을 때는 괄호로 묶는다 int fee = b + (t <= h ? 0 : e); System.out.println(fee); } }}
C#Main.cs · 18 줄
using System;class Program{ static void Main() { string[] head = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries); int b = int.Parse(head[0]), h = int.Parse(head[1]), e = int.Parse(head[2]); int n = int.Parse(Console.ReadLine()); for (int i = 0; i < n; i++) { int t = int.Parse(Console.ReadLine()); // 조건 ? 값 : 값 — 덧셈 안에 넣을 때는 괄호로 묶는다 int fee = b + (t <= h ? 0 : e); Console.WriteLine(fee); } }}
C++main.cpp · 13 줄
#include <iostream>int main() { int b, h, e, n; std::cin >> b >> h >> e >> n; for (int i = 0; i < n; i++) { int t; std::cin >> t; // 조건 ? 값 : 값 — 덧셈 안에 넣을 때는 괄호로 묶는다 int fee = b + (t <= h ? 0 : e); std::cout << fee << "\n"; }}
Cmain.c · 14 줄
#include <stdio.h>int main(void) { int b, h, e, n; if (scanf("%d %d %d %d", &b, &h, &e, &n) != 4) return 0; for (int i = 0; i < n; i++) { int t; if (scanf("%d", &t) != 1) return 0; /* 조건 ? 값 : 값 — 덧셈 안에 넣을 때는 괄호로 묶는다 */ int fee = b + (t <= h ? 0 : e); printf("%d\n", fee); } return 0;}
Craykonmain.cray · 12 줄
head = 콘솔.수들읽기();b = head[0];h = head[1];e = head[2];n = 콘솔.줄읽기().수로변환();반복 (i = 0; i < n; i++){ t = 콘솔.줄읽기().수로변환(); // 조건 ? 값 : 값 — 덧셈 안에 넣을 때는 괄호로 묶는다 fee = b + (t <= h ? 0 : e); 콘솔.쓰기(fee);}