구현, 수학
[백준] 1267. 핸드폰 요금 풀이
hch06
2025. 2. 2. 17:27
https://www.acmicpc.net/problem/1267
한번의 통화에서 발생하는 요금은
영식요금제: (30초당 요금) * {(통화시간/30초)+1}
영식요금제: (60초당 요금) * {(통화시간/60초)+1}
반복문을 통해 주어진 각각의 통화시간에 대해 요금을 계산하고 합산하여
어떤 요금제의 요금이 더 낮은지 비교하는 문제
C
더보기
#include <stdio.h>
#define min(X, Y) ((X) < (Y)) ? (X) : (Y)
int main() {
int n; scanf("%d", &n);
int y = 0, m = 0;
while(n--){
int v; scanf("%d", &v);
y += 10 * ((v/30) + 1);
m += 15 * ((v/60) + 1);
}
if(y < m) printf("Y %d", y);
else if(m < y) printf("M %d", m);
else printf("Y M %d", y);
}
Python
더보기
input()
v = map(int, input().split())
y = 0; m = 0
for i in v:
y += 10 * ((i // 30) + 1)
m += 15 * ((i // 60) + 1)
if y < m: print("Y %d" % y)
elif m < y: print("M %d" % m)
else: print("Y M %d" % y)
Java
더보기
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int sum_y = 0, sum_m = 0;
for(int i = 0; i < n; i++){
int v = s.nextInt();
sum_y += ((v/30) + 1) * 10;
sum_m += ((v/60) + 1) * 15;
}
if(sum_y == sum_m) System.out.format("Y M %d", sum_y);
else if(sum_y < sum_m) System.out.format("Y %d", sum_y);
else System.out.format("M %d", sum_m);
}
}
JavaScript
더보기
ip = require('fs').readFileSync(0).toString().split('\n')
n = ip[0]
call_list = ip[1].split(' ').map(Number)
sum_y = 0; sum_m = 0
for(let i = 0; i < n; i++){
v = call_list[i]
sum_y += (Math.floor(v/30) + 1) * 10
sum_m += (Math.floor(v/60) + 1) * 15
}
if(sum_y == sum_m) console.log("Y", "M", sum_y)
else if(sum_y < sum_m) console.log("Y", sum_y)
else console.log("M", sum_m)