14627 파닭파닭 문제 질문
334
작성한 질문수 19
안녕하세요 문제 풀다가 질문이 생겨 글 올립니다.
http://boj.kr/dc7d38df2438415ab8eeb6bd946521ed
저는 위와 같이 코딩하였습니다.
최대 파의 길이를 구하는 로직은 맞는 것 같은데,
마지막 답을 구하는 과정에서 틀린 것 같습니다.
어떤 부분이 틀렸는지 알 수 있을까요?
답변 1
0
안녕하세요 ㅎㅎ 코드 다 확인했는데요. 다른 부분은 다 괜찮은데요.
혹시 다음 코드 왜 이렇게 짜신 건지 설명 가능할까요?
// 왜 이렇게 하는거죠?
ret += a[i] - (a[i] / ans) * ans;
0
치킨 하나에 들어가는 파 양이 ans일 때
ret += a[i] - (a[i] / ans) * ans;
파 길이 = a[i]
썰어서 없앤 부분의 길이 = (a[i] / ans) * ans
남은 양 += 파 길이 - 썰어서 없앤 부분의 길이
로 짰습니다.
0
그렇게 하시면 안되고. 주문받은 파닭의 수를 기반으로 하셔야 합니다.
다음코드 참고해주세요.
#include <iostream>
using namespace std;
typedef long long ll;
ll s, c, ans, sum;
ll a[1000004];
int check(ll temp)
{
ll cnt = 0;
for (int i = 0; i < s; i++)
{
cnt += a[i] / temp;
}
if (cnt >= c) return 1;
else return 0;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> s >> c;
for (int i = 0; i < s; i++)
{
cin >> a[i];
sum += a[i];
}
ll lo = 1;
ll hi = 1e9;
while (lo <= hi)
{
ll mid = (lo + hi) / (1ll * 2);
if (check(mid))
{
ans = mid;
lo = mid + 1;
}
else
{
hi = mid - 1;
}
}
ll ret = 0;
for (int i = 0; i < s; i++)
{
ret += a[i] - (a[i] / ans) * ans;
}
cout << sum - ans * c << "\n";
return 0;
}
1-E질문입니다!
0
515
2
3-L 틀린 부분 피드백 부탁드립니다.
0
815
2
1-A문제 순열재귀함수 질문입니다.
0
380
1
1-A 일곱난쟁이문제입니다
0
454
1
문제 풀 때 방향성에 대해
0
796
1
맥에서 vs code로 실행 관련 질문입니다
0
520
1
17071번 메모리 초과
0
384
1
1-C질문입니다!
0
416
2
2-B BFS 시간초과질문
0
628
2
1-O 13번 라인
0
437
1
6-J 놀이공원 문제 질문
0
379
1
구현관련 질문
0
481
1
강의 교안
0
316
1
실력을 더 올리고나서 강의를 보는 것이 맞을까요?
0
544
1
안녕하세요! 재귀함수에 관해서 질문드립니다
0
534
1
1-K
0
471
2
3-G번 질문있습니다.
1
468
3
3-C 실행 시간 질문드립니다.
0
491
1
4-A 문제 풀이 질문있습니다.
0
589
2
비트마스킹 연산자 "1의 보수" 영문 표기법
0
433
1
격자탐색 문제에서 BFS 시간복잡도 질문드립니다.
0
332
1
3-O go 함수 질문 드립니다.
1
441
2
4-A 출력 질문
0
301
1
1주차 1-O 질문드립니다
0
253
1





