Daily BOJ 22/01/17-22/01/23
2022/01/23
⚠ 스포일러 주의 ⚠
이 글은 BOJ(백준 온라인 저지) 문제 해답을 포함하고 있습니다.
조증이 나를 의욕 뿜뿜으로 만드네
- 적당히 사려야 하는데 그게 잘 안되네
- 그냥 매일 하는 루틴을 최대한 지키기로 마음 먹었어. 여기서 더 무리하면 안되니깐…
- 듀오링고 출첵
- BOJ 5문제 → 풀이 정리
- ML/DL 공부
- 비올라 연습
2022/01/17 월요일
#6416 트리인가? [G5]

- 트리의 성질 중 하나는
edge = node - 1- 사이클을 이루게 되면 저 위의 성질이 깨진다.
- 위의 그림의 그래프와 같이 여러개가 하나를 가리키면 틀림
1
2
3map<int, int> edge;
// Do something
if(edge.find(y)!=edge.end()) flag = false; x,y를 받을 때y에 연결된게 있는지 찾고,edge[y] = true로 만들어서 마킹함.- 연결된게 있는데 이러면 이것은 트리가 아님.
- 나는
map<int, int> node;해두고node[x]와node[y]를 하나씩 증가해서 노드의 개수를 파악했다. edge = node.size() - 1이면 트리. 아니면 !트리
#5550 헌책방 [G2]
- 책 종류에 대해 책의 가격들을 내림차순으로 정리할 필요가 있음
1
for(auto &g: v) sort(g.begin(), g.end(), greater<int>());
&붙여야 행을 돌아버림
- 그리고
1권 팔았을때,2권 팔았을 때,,, 의 매입가격을 구하는 누적합 배열을 하나 만들어서 이제 dp시작.- 여기서 같은 장르의 책을
T권 매입했을 때 매입 가격이 올라가는 것을 계산해서 집어넣었음.
- 여기서 같은 장르의 책을
1 | for(auto &sum: s){ |
dp[i]:i권 팔았을 때 매입 가격의 최댓값for의i가 정방향이면 계속 앞의 가격을 참조를 해서 같은 책만 담는 경우가 있어서 역방향 해야 함.- 딴 이유가 있을텐데 나는 이렇게 이해하는게 그나마 맘에 와닿더라…..
#1058 친구 [S2]
1 | for(int k=0;k<N;k++){ |
- 그냥 플로이드 워셜 돌려서
a[i][j]<=2인 것의 개수를 세면 됨. - 첨에 초기화 잘 해야 함!
2022/01/18 화요일
2611 자동차경주 [G2]
1 | queue<int> q; |
- 위상정렬
dp처럼 하면 됨befo[next] = now로 간 길 흔적 남겨서 나중에 트레킹 하면 됨
2022/01/19 수요일
1 | exit(0) |
python에서 exit(0)과 같음
2022/01/20 목요일
#19577 수학은 재밌어 [P2]
- $x\phi(x)=N$을 구해서 하면 된다
- $\phi(x)/x$는 대략 $1/1.8*loglogn$
2022/01/21 금요일
#13900 순서쌍 곱의 합[S4]
(1, 2, 3, 4)라고 하면1의 차례에서1*(2+3+4)이고2의 차례에서2*(3+4)이고3의 차례에서3*4이니깐- 이걸 그대로 구현하면 됨
#2226 이진수[G4]
dp[0]=1, dp[1]=0, dp[2]=1dp[i] = dp[i-1]+2*dp[i-2] (i>2)
#7453 합이 0인 네 정수[G2]
- 파이썬에서
dict사용c+d의 모든 경우를 거기다 집어 넣음(sum이라 하자)-(a+b)가sum에 있을 때 그 개수만큼(sum[-(a+b)]만큼) 답을 더해준다.
- C++에서
map했는데 터졌는데unordered_map했는데도 터진 나와 아슬아슬 성공한 실버 선생님
2022/01/22 토요일
#1049 기타줄[S4]
6개로 이루어진 가격과1개로 이루어진 가격을 각각 오름차순으로 정렬- 거기서 가장 싼
1개짜리를v1,6개짜리를v6라고 하면v1*6 <=v6이면 그냥 그대로 가는거고- 아니면 최대한
v6을 많이 가져가는 방향으로 나아감
#2812 크게 만들기[G4]
- 스택으로
st.top()보다 현재 수가 크면 빼고 집어넣음
2022/01/23 일요일