일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 프로그래머스 #mysql #역순 정렬하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #동명 동물 수 찾기 #mysql #데이터베이스 #db #코린이 #개발자 #알고리즘
- 백준 #다이얼 #5622 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #어린 동물 찾기 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #자동차 대여 기록에서 장기/단기 대여 구분하기 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기 중 가장 큰 물고기의 길이 구하기 #알고리즘 #mysql #코린이 #개발자 #study
- 백준 #4153 #직각삼각형 #알고리즘 #자바 #java #코린이 #개발자 #study
- mysql #min() #max() #최소값 #최대값 #코린이 #개발자 #study
- 특정 옵션이 포함된 자동차 리스트 구하기 #코린이 #개발자 #study
- 프로그래머스 #가장 큰 물고기 10마리 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #아픈 동물 찾기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #이름이 있는 동물의 아이디 #코린이 #개발자 #study
- 프로그래머스 #나이 정보가 없는 회원 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #과일로 만든 아이스크림 고르기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기의 평균 길이 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #
- 백준 #네 번째 점 #3009 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #python 개발자 찾기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #모음 제거 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #mysql #경기도에 위치한 식품창고 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 코린이 #개발자 #study
- 프로그래머스 #mysql #12세 이하인 여자 환자 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #인기있는 아이스크림 #코린이 #개발자 #study
- 프로그래머스 #mysql #흉부외과 또는 일반외과 의사 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #
- 프로그래머스 #한 해에 잡은 물고기 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #일곱 난쟁이 #2309 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #동명 동물 수 찾기 #알고리즘 #코린이 #개발자
- 프로그래머스 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #조건에 맞는 회원수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- Today
- Total
luke
[백준] - 진짜 공간 (1350) (자바/Java) 본문
https://www.acmicpc.net/problem/1350
문제.
풀이.
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 |