- 프로그래머스 고득점 kit에서 문제를 하나씩 골라 진행
- 일주일 동안 kit 안의 문제를 진행
- 목요일 20시까지 문제 풀이를 완료하고, 개인 레포지토리에
수도 코드
,시간 복잡도
,문제 소요 시간
을 포함한README
작성- 매주 레포지토리의 새로운 브랜치를 생성하고, 풀이 완료 후 Pull Request를 생성하여 코드 리뷰
- 다른 사람의 문제 풀이에 대한 피드백을 일요일까지 완료
- 월 week N
- ex) JAN week2
30분 (매우 쉬웠습니다!)
- 맵을 구성하면서 건물들의 높이를 리스트에 저장 (중복 없음)
- 해당 높이 리스트를 순회하며, 각 높이 이상인 영역을 상하좌우로 BFS 탐색
- 각 탐색 결과 중 영역 개수의 최댓값을 도출
private static void bfs(Pos pos, int h) {
Queue<Pos> q = new LinkedList<>();
q.add(pos);
visited[pos.y][pos.x] = true;
cnt++;
while (!q.isEmpty()) {
Pos p = q.poll();
for (int i = 0; i < 4; ++i) {
int ny = p.y + dy[i];
int nx = p.x + dx[i];
if (ny < 0 || ny >= N || nx < 0 || nx >= N
|| visited[ny][nx] || map[ny][nx] < h) {
continue;
}
q.add(new Pos(ny, nx));
visited[ny][nx] = true;
}
}
}
- 57168kb
- 272ms