본문 바로가기

알고리즘/🥉 브론즈

백준 1267 핸드폰 요금 자바 풀이

728x90

난이도 : 브론즈3

풀이일 : 2401033

https://www.acmicpc.net/problem/1267

 

1267번: 핸드폰 요금

동호가 저번 달에 이용한 통화의 개수 N이 주어진다. N은 20보다 작거나 같은 자연수이다. 둘째 줄에 통화 시간 N개가 주어진다. 통화 시간은 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net


링크로 이동하기 귀찮은 분들을 위한 문제 캡쳐

 


풀이 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		int[] array = new int[N];
		int M = 0;
		int Y = 0;
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		for (int i = 0; i < N; i++) {
			array[i] = Integer.parseInt(st.nextToken());
		}
		
		for (int i = 0; i < N; i++) {			
			Y += (array[i]/30 + 1) * 10;
			M += (array[i]/60 + 1) * 15;
			
		}

		if (Y <  M) {
			System.out.println("Y "+Y);
		}
		else if (M < Y) {
			System.out.println("M "+M);
		}
		else {
			System.out.println("Y M "+M);
		}
	}
}

풀이

  • int Y, M : 영식 요금제와 민식 요금제로 계산한 동호의 핸드폰 요금
  • array : 동호의 통화 건 수만큼 각 통화시간을 담을 배열
  • 배열을 순회하며 각 요소에 대해 영식 요금제, 민식 요금제 가격을 더해준다.
  • 배열 순회가 끝나면 조건문으로 비교 후 결과를 출력한다.

느낀점

  • 며칠 급한 프로젝트를 하느라 알고리즘을 안했더니 다시 입력 받기부터 버벅인다. 꾸준하게 풀어야지.
  • 기초 문제를 이전에 배운 입력 방법들을 잊지 않으려고 괜히 복잡하게 입력받아서 풀게된 느낌이다.
  • 급하게 풀었더니 나누어 떨어지는 경우를 삼항 연산자로 돈이 덜 들게 조건을 달아서 한 번 틀렸다. 시간 좀 넉넉하게 두고 풀이를 시작하자.