일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 프로그래머스 #mysql #흉부외과 또는 일반외과 의사 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 백준 #다이얼 #5622 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #모음 제거 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #한 해에 잡은 물고기 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #4153 #직각삼각형 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #이름이 있는 동물의 아이디 #코린이 #개발자 #study
- 백준 #일곱 난쟁이 #2309 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #경기도에 위치한 식품창고 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- mysql #min() #max() #최소값 #최대값 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #인기있는 아이스크림 #코린이 #개발자 #study
- 프로그래머스 #mysql #동명 동물 수 찾기 #알고리즘 #코린이 #개발자
- 특정 옵션이 포함된 자동차 리스트 구하기 #코린이 #개발자 #study
- 백준 #네 번째 점 #3009 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기의 평균 길이 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #나이 정보가 없는 회원 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #역순 정렬하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #python 개발자 찾기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #완주하지 못한 선수 #자바 #java #코딩 #코린이 #개발자 #study
- 알고리즘 #백준 #java #자바 #2869 #달팽이는 올라가고 싶다 #코린이 #개발자 #study
- 프로그래머스 #mysql #12세 이하인 여자 환자 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #자동차 대여 기록에서 장기/단기 대여 구분하기 #코린이 #개발자 #study
- 프로그래머스 #과일로 만든 아이스크림 고르기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기 중 가장 큰 물고기의 길이 구하기 #알고리즘 #mysql #코린이 #개발자 #study
- 백준 #
- 프로그래머스 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #
- 코린이 #개발자 #study
- 프로그래머스 #가장 큰 물고기 10마리 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #동명 동물 수 찾기 #mysql #데이터베이스 #db #코린이 #개발자 #알고리즘
- 프로그래머스 #조건에 맞는 회원수 구하기 #mysql #알고리즘 #코린이 #개발자 #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 |