Daily BOJ 21/12/05-21/12/11
2021/12/06

⚠ 스포일러 주의 ⚠
이 글은 BOJ(백준 온라인 저지) 문제 해답을 포함하고 있습니다.



2021/12/05 일요일

※ tier: s5…g1

211206
2021/12/06 17:45

  • 문제를 풀기는 하는데 금방 알 수 없어서 포기하고 해답지를 보던 중고등학교 때의 습관이 커서도 그런다.
  • 그래서 맨날 머리에 안 들어와서 배낭 문제 맨날 헤매고, DP도 머리 박고…
  • 일단은 클래스 6 진도를 나가는 것은 무리라 생각
  • 최대한 안 보고 물론 모르는 골드 레벨 알고리즘(스위핑 같은)들은 찾아보겠다만 그래도 최대한 안봐야 코포도 오르고 그러지 안그래 하루야
  • 대신 하루에 많이 많이 풀어서 3월 개강 전에 1000 solve 만들기 모임


2021/12/06 월요일

#3187 양치기 꿍 [S2]

링크

  • 그냥 빈칸이 있을 때 다 탐방해서 양의 수와 늑대의 수를 세면 된다
  • bfs가 다익스트라 때문에 편해서 bfs로 짜게 되는데
    • dfs도 꾸준히 써야겠다는 생각이 들어.
  • NM인데 NN을 써서 틀리고 시작^q^..

#9322 철벽 보안 알고리즘 [S4]

링크

  • map을 이용해 공개키 1, 2 상관관계 파악
    • 공개키 1의 단어의 위치를 넣고
    • 공개키 2가 있어야 할 위치를 넣고
  • 그다음에 암호문에 넣어 평문으로 만들기

#18427 함께 블록 쌓기 [G4]

링크

  • 도저히 못하겠어 살짝 찾아봄
  • 근데 보니깐 또 할만함. 또 낚임…….

문제 그림

  • 그림을 보니깐 이게 그대로 표인 줄 알고 아니 이거 어찌함????으로 알고 있었는데 낚였음
  • 다음엔 좀 더 신중히 보자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int dp[51][1001]={0};
for(int i=0; i<=N; i++) dp[i][0]=1;

for(int i=1; i<=N; i++){
for(int j=1; j<=H; j++){
dp[i][j] += dp[i-1][j];

for(auto block: v[i]){
if(j-block>=0){
dp[i][j] += dp[i-1][j-block];
}
}
}
}
  • dp[i][j]: i명이 있을 때 j만큼 높이를 쌓았을 때 사용
  • dp[i][0]: i명이 있을 때 0만큼 높이를 쌓는 방법은 한가지
  • 나머지는
    • i번째 사람이 자신의 블록을 놓지 않는 경우
    • i번째 사람의 자신의 블록(block)을 놓는 경우 → 이 경우는 현재 높이보다 블럭의 높이가 더 작아야 한다.
1
cin.ignore();
  • 입력부가 까다로운데 다음을 하면 cin을 앞에서 해서 남아있던 \n 버퍼가 없어져서 getline(cin, s)을 하게 되면 깔끔하게 하게 됨.



그 이후로는 너무 바빠서 아무것도 못했다 함

700 solve!

  • 211214 700 solve 달성