구현, 수학

[백준] 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)