날짜 : 2021년 10월 22일 금요일
시간 : 21: 00 ~ 22:55
참석자 : 김우찬, 조동균, 박종근
사용 툴 : Discord
작성자 : 박종근
-
오픈 채팅방
🔥 <Key , Value> 를 저장하는 로직에서는 HashMap이 시간복잡도 O(1)로 매우 빠름으로 사용할 것.
-
숫자 문자열과 영단어
특이사항 없음.
-
컬리링북
단지 번호 붙이기 하위 버전이라 특이사항 없이 풀었음.
- 머리속으로 로직이 완벽하게 정리되지 않은 상태에서 풀이 시 실패 가능성이 높다. 경우의 수와 예외를 따져보고 개인적인 시뮬레이션이 완벽하게 정리가 되었을 때 코드 작업으로 넘어 갈 것. 조급하면 망한다.
- 특정 조건에 도달해도 끝이 아니고 그 외에도 가능한 모든 경로(경우)를 다 확인해야하는 문제일 경우 백트래킹을 해야하는데 DFS가 유리하다.
// 김우찬 부분 코드 출처
void bfs(int x, int y, int cnt) {
if (cnt == 3) {
return;
}
for (int d = 0; d < 4; d++) {
for (int k = 1; k < n; k++) {
int nx = x + dx[d] * k;
int ny = y + dy[d] * k;
if (nx >= 0 && ny >= 0 && nx < n && ny < n && b[nx][ny] == 1) {
for (int kk = 1; kk < n; kk++) {
int mx = nx + dx[d] * kk;
int my = ny + dy[d] * kk;
if (mx >= 0 && my >= 0 && mx < n && my < n) {
if (b[mx][my] == 0) {
bfs(mx, my, cnt + 1);
}
else if (b[mx][my] == 1) {
// 특정 상황 진행
b[mx][my] = 0;
if (!check[mx][my]) {
result++;
check[mx][my] = true;
}
// 다음 재귀함수 보내기
bfs(mx, my, cnt + 1);
// 다음 재귀함수 바로 아래 상태 복구하여 특정 상황 진행 이전상태로 변경
b[mx][my] = 1;
break;
}
}
}
break;
}
}
}
}
프로그래머스 크레인 인형 뽑기 게임 https://programmers.co.kr/learn/courses/30/lessons/64061
프로그래머스 단체 사진 찍기 https://programmers.co.kr/learn/courses/30/lessons/1835