새해가 밝았다~ 일어나라~
더 열심히 코딩 해야지 🔥
문제 | 문제 제목 |
---|---|
2583 | 영역 구하기 |
2667 | 단지번호붙이기 |
5014 | 스타트링크 |
2468 | 안전 영역 |
DP에서 깎인 자존심을 BFS를 풀면서 회복하는 것 같아서 재미도 있고 기분도 좋다!
오늘은 마지막 문제를 제외하고는 지금까지 해결한 문제와 유사하여 크게 고민없이 해결했다.
2583, 2667과 유사하게 영역을 구하는 문제였지만,
비가 오는 높이 별로 영역의 개수를 구하여, 최대 값을 출력해야하는 차이점이 있다.
처음에는 높이의 최대 값인 100까지 반복문을 돌릴까 고민했지만,
입력을 받을 때, 최대 높이만 업데이트를 해주면 반복 횟수를 크게 줄일 수 있다.
문제를 1회 틀렸는데, 비가 오지 않는 즉 높이가 0인 경우의 케이스를 생각하지 못했다.
높이의 범위가 1 ≤ 높이 ≤ 100
라, 1부터 시작했는데 예외 케이스를 더 잘 생각해봐야겠다.
// BFS 함수는 기본 형식과 유사하여 생락한다.
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
cin >> board[i][j];
// 최대 높이를 입력과 함께 업데이트 해준다.
maxtall = max(maxtall, board[i][j]);
}
// 여기서 i를 1부터 시작했다.
// 0부터 최대 높이 - 1 까지 영역을 확인하고, 최댓값을 res에 넣는다.
for (int i = 0; i < maxtall; i++) {
for (int j = 0; j < 101; j++)
fill(v[j], v[j] + 101, 0);
int cnt = 0;
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
if (v[j][k] != 1 && board[j][k] > i) {
q.push({j, k});
v[j][k] = 1;
cnt++;
BFS(i);
}
}
}
res = max(res, cnt);
}
}
Go
를 공부하는 중에 강의에서 아래 사진의 문구를 발견했다.
내 머리 속에 함수는 Call(호출)하는 건데, 왜 Invoke(명사형 invocation)이라고 표현했을까? 라는 생각과 함께 검색 시작
이거 맞나....? 사전이 안 도와주니 스택 오버플로우로 달려간다.
출처: https://stackoverflow.com/questions/50884893/calling-vs-invoking-a-function
두 번째로 추천을 많이 받은 답변을 보면,(첫 번째 답변은 JS 기준의 답변으로 보인다.)
이는 아주 미묘한 개념의 차이가 있다고 한다.
답변에 따르면
예시)
func invokeFunc(callFunc func()) {
callFunc()
}
invokeFunc(myFunc)
// 위와 같은 행위가 인보크이다!