| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 프로그래머스 #문자열이 몇 번 등장하는지 세기 #알고리즘 #Java #자바 #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #문자열 뒤집기 #알고리즘 #Java #자바 #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #소수 만들기 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- 프로그래머스 #세로 읽기 #알고리즘 #개발자 #코린이 #study #성장 #Java #자바
- 프로그래머스 #열의 길이를 2의 거듭제곱으로 만들기 #Java #자바 #알고리즘 #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #수열과 구간 쿼리 3 #알고리즘 #자바 #Java #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #있었는데요 없었습니다 #DB #MySQL #알고리즘 #쿼리문 #코린이 #개발자 #study #공부 #성장
- 코린이 #개발자 #study
- 프로그래머스 #배열 회전시키기 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- 프로그래머스 #오랜 기간 보호한 동물(1) #알고리즘 #MySQL #DB #쿼리문 #개발자 #study #성장 #코린이
- 프로그래머스 #조건에 맞는 사용자와 총 거래금액 조회하기 #알고리즘 #Mysql #DB #쿼리문 #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #조건에 맞게 수열 변환하기 1 #알고리즘 #자바 #Java #코린이 #개발자 #study #취준
- 프로그래머스 #푸드 파이트 대회 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- 프로그래머스 #1로 만들기 #알고리즘 #자바 #Java #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #조건별로 분류하여 주문상태 출력하기 #MySQL #쿼리문 #알고리즘 #코린이 #개발자 #study #취준
- 프로그래머스 #할 일 목록 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- 프로그래머스 #중복된 문자 제거 #알고리즘 #Java #자바 #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #간단한 식 계산하기 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- 파이썬 #input() #sys.stdin.readline() #공부 #study
- 프로그래머스 #2차원으로 만들기 #알고리즘 #Java #자바 #study #코린이 #개발자 #공부 #성장
- 프로그래머스 #합성수 찾기 #알고리즘 #Java #자바 #stiudy #코린이 #개발자 #공부 #성장
- 프로그래머스 #특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 #알고리즘 #자바 #Java #코린이 #개발자 #study #공부 #성장
- 백준 #
- 프로그래머스 #수열과 구간 쿼리1 #알고리즘 #자바 #Java #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #날짜 비교하기 #알고리즘 #자바 #Java #코린이 #개발자 #study #공부 #성장
- 프로그래머스 #배열만들기 5 #알고리즘 #study #Java #코린이 #개발자 #성장 #공부
- 프로그래머스 #길이에 따른 연산 #알고리즘 #자바 #Java #코린이 #개발자 #study #취준
- 프로그래머스 #카테고리 별 도서 판매량 집계하기 #알고리즘 #쿼리문 #MySQL #코린이 #개발자 #study #취준
- 프로그래머스 #등차수열의 특정한 항만 더하기 #알고리즘 #Java #자바 #코린이 #개발자 #study #공부
- 프로그래머스 #부분 문자열 이어 붙여 문자열 만들기 #알고리즘 #Java #자바 #코린이 #개발자 #study #취준
- Today
- Total
luke
[백준] - 진짜 공간 (1350) (자바/Java) 본문
https://www.acmicpc.net/problem/1350
1350번: 진짜 공간
첫째 줄에 파일의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 파일의 크기가 공백을 사이에 두고 하나씩 주어진다. 파일의 크기는 1,000,000,000보다 작거나 같은 음이 아닌
www.acmicpc.net
문제.


풀이.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
long[] arr = new long[n];
long tot = 0;
double cnt = 0;
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
double disc = sc.nextInt();
for (int j = 0; j < arr.length; j++) {
if (arr[j] >= 0) {
cnt = Math.ceil(arr[j] / disc);
tot += (int)cnt * disc;
}
}
System.out.println(tot);
}
}
이번 문제는 크게 어렵지 않았다..! 하지만 계속 답은 맞는 거 같은데 틀렸다 나와서 고민해 보니 자료형의 문제가 있었다... 이번 기회에 더 생각하고 문제에 접근해야겠다는 마음을 가졌다.
우선 문제를 쉽게 말하자면 N 과 M 을 나눠 소수점이 1 이라도 있으면 반올림해 정수로 만들어 클러스터의 크기인 M을 곱해 합을 합을 구하는 문제다.
예시 : ( 600 / 512 = 1.1875(= 2) ) => 2 * 512 = 1024(클러스터의 크기)
그럼 바로 설명 해보겠다.
1. 파일을 담아둘 배열을 생성해 N입력 값이 배열의 크기와 같게 해 준다.
2. tot = 클러스터들을 모두 합한 총 값, cnt = 클러스터의 개수(M)
3. 배열 안에 파일들의 크기를 순차적으로 담아준다.
4. 루프를 돌려 배열 안에 있는 파일 크기가 0 이상인 조건식을 만든다. (0 이 들어올 경우 클러스트는 필요 없다는 지문이 있기 때문)
5. Math.ceil() 함수를 사용해 소수점 1이라도 있으면 올림을 한 뒤 클러스트 개수를 카운트해준다.
6. tot 변수에 cnt 개수와 disc (클러스터의 크기)를 곱해 더해준다.
필력이 부족해 풀이가 많이 부족하고 이해하기 어려울 수도 있다는 생각이 든다... 하지만 중요한 건 Math.ceil() 함수만 안다면 쉽게 풀 수 있다! Math.ceil() 함수에 대해 간단히 설명하자면 소수점에 1 하나라도 있으면 올림 해주는 함수이다!
예시 코드를 봐보겠다.
System.out.println(Math.ceil(16/100.0));
System.out.println(16/100.0);
System.out.println(Math.ceil(16/36970.0));
System.out.println(16/3697.0);
//결과
1.0 //Math.ceil() 함수를 사용한 값 1
0.16 // 사용하지 않은 값 0.16
0.004327833378414931 //Math.ceil() 함수를 사용한 값 1
1.0 // 사용하지 않은 값 0.16
그리고 arr, tot, cnt 변수들의 자료형이 int 가 아니고 double, long 자료형인데 이러한 이유는 문제 지문을 읽어보면
수가 상당이 크기 때문에 메모리 크기가 작아 문제 제출 시 실패라 나온다...!!
'알고리즘문제 > 백준 문제(Java)' 카테고리의 다른 글
| [백준] - 행복 (15969) (자바/Java) (0) | 2024.04.09 |
|---|---|
| [백준] - 콘테스트 (5576) (자바/Java) (0) | 2024.04.08 |
| [백준] - 짝수를 찾아라 (3058) (자바/Java) (0) | 2024.04.05 |
| [백준] - 배수 찾기 (4504) (자바/Java) (0) | 2024.04.02 |
| [백준] - 피시방 알바 (1453) (자바/Java) (0) | 2024.03.31 |