🫒해야 할 일
(9월 27일)
1. 코드 자세히~ ⭕️
2. 설명 준비 ⭕️
3. 과제 코드리뷰하기⭕️
4.원스탑튜터 ⭕️ - 아파서 한 번 쌔비지
5. 피피티제출⭕️
6. 강의하기⭕️
+ clion 라이선스 체크하기⭕️
+ ⭐️다음 강의 자료만들기⭕️
라이선스!! 학생 무료 라이선스가 잇엇다니!!
두번 결제햇는데!!이미
그리고 그것도 자꾸 라이선스 없다고 뭐라해서 못 썼는데
아.. 하려다가 한달이 지나버리고..
드디어 자동결제 취소...
👩🏻🏫 준비 👩🏻🏫
구현 문제 한 개
수업시간 몰래 알튜비튜준비
알고리즘을 미리 하니 자료구조 시간에 즐겁네요 교수님 저도 똑같은 두 문제 저저번주에 강의햇어용
#include <iostream>
#include <vector>
using namespace std;
typedef pair<int, int> pii;
const int MAX_HEIGHT = 257;
const int INF = 987'654'321;//가능한 최댓값이 12,800,000이므로 많이 쓰는 큰 수인 987654321을 사용했습니다! INF관련 글을 한번 읽어보세요!
// 모든 땅의 높이를 height로 만드는 비용 계산
int calcCost(int height, int n, int m, int b, vector<vector<int>>& blocks) {
int cost = 0;
int added = 0; // 추가해야 하는 블록의 총 개수
int removed = 0; // 제거해야 하는 블록의 총 개수
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int gap = abs(height - blocks[i][j]);
if (blocks[i][j] > height) {
// 목표 높이보다 높은 칸인 경우, gap개의 블록 제거
removed += gap;
}
else if (blocks[i][j] < height) {
// 목표 높이보다 낮은 칸인 경우, gap개의 블록 추가
added += gap;
}
}
}
// 전체 비용 계산
cost = 2 * removed + added;
// 블록 개수가 부족하다면 모든 땅의 높이를 height로 만드는 것이 불가능
return (added > (b + removed)) ? INF : cost;
}
// 모든 땅의 높이를 같게 만드는 최소 비용과 그 때의 땅의 높이
pii makeGroundEven(int n, int m, int b, vector<vector<int>>& ground) {
int minCost = INF;
int height = 0;
// 모든 높이를 다 만들어보고 최소 비용 찾기
for (int i = 0; i < MAX_HEIGHT; i++) {
int cost = calcCost(i, n, m, b, ground);
if (cost <= minCost) {
minCost = cost;
height = i;
}
}
return {minCost, height};
}
/**
* 블록 높이의 최댓값이 256밖에 되지 않으므로
* 모든 칸을 높이 n(0~256)으로 만드는 모든 경우를 시도해보고
* 그 중에서 비용이 최소가 될 때를 찾는다.
*
* 모든 칸을 높이 n으로 만드는
*/
int main() {
int n, m, b;
// 입력
cin >> n >> m >> b;
vector<vector<int>> ground(n, vector<int>(m));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> ground[i][j];
}
}
// 연산
pii answer = makeGroundEven(n, m, b, ground);
// 출력
cout << answer.first << " " << answer.second << "\n";
return 0;
}
8달 전에 썻던 파이썬 코드도
# 브루트 포스
from sys import stdin
N, M, B = map(int,stdin.readline().split()) # 세로 가로 인벤토리블록
land = [list(map(int,stdin.readline().split())) for _ in range(N)]
answer = 999999999
for height in range(257):
max_target, min_target = 0, 0
for i in range(N):
for j in range(M):
if land[i][j] >= height:
max_target += land[i][j] - height
else:
min_target += height - land[i][j]
if max_target + B >= min_target:
if min_target + (max_target * 2) <= answer:
answer = min_target + (max_target * 2)
Height = height # 층수
print(answer, Height)
👩🏻🏫 강의 👩🏻🏫
강의하는 채원언니 캡처
나는 끝에 조금만~
갠찬게한듯!
이독 세미나 홍보도 함
👩🏻🏫 코드리뷰 👩🏻🏫
[그리디 알고리즘 구현 코드 리뷰 완료]
18111 (P3)
[그리디 알고리즘 구현 코드 리뷰 완료]
18111 (P3)
전체적으로 깔끔하고 좋은 코드로 작성해주셨네요! 코멘트 남긴 부분 확인해주세요! 수고하셨습니다!
make pair 대신 {}를 쓰셔도 됩니다!
많이 쓰이는 자료형은 typedef를 이용해서 별칭 지정해보시는 건 어떨까요?
p3. 입출력만 메인 함수에서 진행해보시고 기능별로 함수를 밖으로 빼 보세요!
c++에서 최댓값(INF)을 다루는 여러 가지 방법에 대해 찾아보셔도 좋을 것 같네요!
큼큼..많이나오는거복붙으로돌려막기하는나쁜튜터..
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ알고리즘 부분 코드리뷰하는채원언닠ㅋㅋㅋㅋㅋ
다 똑같았던것
교수님 호오오옥시 보고 계신다면..죄송합니다
사람들이.. 많이 없어지셨다
분명 40이었는데
이제 19..?
리뷰할 게 줄어서 기쁘지만...엄..
오예
스트릭 또 깨졌다
우왕!
미쳣다 그냥
캠핑에서 벌레들과의 미팅 이슈로..빨리 잠에 들었더니..
ㅜ내 81일?이었나
하..
이제 안 한다
'✨ Club|Project > 알튜비튜 e-class 튜터 | Algorithm' 카테고리의 다른 글
❇️ 알튜비튜 ❇️ - 6번째 강의 - 수 (6) | 2023.10.10 |
---|---|
❇️ 알튜비튜 ❇️ - 5번째 강의 - 금 (1) | 2023.10.06 |
✳️ EPPER ✳️ - 대회 감독 (0) | 2023.09.24 |
✳️원스탑튜터✳️ - 장학금 냠냠 (0) | 2023.09.22 |
❇️ 알튜비튜 ❇️ - 3번째 (보조)강의 - 수 (0) | 2023.09.13 |