🦾 오늘의 컨디션 및 특이사항(개인 일정 등)
- 수면 시간
- 학습 시간
- 13 : 00 ~ 17 : 00
- 23 : 00 ~ 00 : 00
- 특이사항
📑 세부 학습 내용
📅 스케쥴
- 4시간 강의 + 궁금한 개념 조사 및 학습 + 1시간 코딩테스트 및 풀이 리뷰
- 총 5시간
📺 인프런 강의
📺 김영한의 실전 데이터베이스 - 기본편 (김영한)
- 데이터를 처리하기 위한 SQL 문법을 확실하게 마스터하는 것과 더불어, 특히 조인 및 인덱스의 정의 및 올바른 사용 방법을 확실하게 이해하여 쿼리 성능을 최적화 - 극대화할 수 있는 개발자로 성장하고, 추가로 데이터베이스에서의 트랜잭션 관련도 더 확실하게 이해하여 DB 쿼리 성능을 최대한 최적화 할 수 있는 성능에 민감한 개발자를 목표로 학습 시작
- 58. 인덱스와 정렬 ~ 71. 기본 제약 조건 까지 학습 완료
- 과정의 모든 내용 이해 및 실습 완료
- 강의 내 퀴즈 모두 풀이 및 오답노트
- 강의에 없는 내용 중 이해가 안 되거나 궁금한 부분은 따로 추가 학습 진행
- 이전 내용 중 헷갈리는 부분 복습하면서 진행
✏️ 코딩 테스트
⭕ 풀이 코드
class Solution {
int row = 5;
int col = 5;
public int[] solution(String[][] places) {
int[] answer = new int[row];
int idx = 0;
placeLoop:
for (String[] place : places) {
List<int[]> people = new ArrayList<>();
for (int i = 0; i < row; i++) {
char[] chars = place[i].toCharArray();
for (int j = 0; j < col; j++) {
if (chars[j] == 'P') {
people.add(new int[]{i, j});
}
}
}
for (int i = 0; i < people.size(); i++) {
int[] rc1 = people.get(i);
for (int j = i + 1; j < people.size(); j++) {
int[] rc2 = people.get(j);
int distance = getManhattan(rc1[0], rc1[1], rc2[0], rc2[1]);
if (distance <= 1) {
answer[idx++] = 0;
continue placeLoop;
}
if (distance == 2) {
if (!isPossible(rc1, rc2, place)) {
answer[idx++] = 0;
continue placeLoop;
}
}
}
}
answer[idx++] = 1;
}
return answer;
}
private int getManhattan(int r1, int c1, int r2, int c2) {
return Math.abs(r1 - r2) + Math.abs(c1 - c2);
}
private boolean isPossible(int[] rc1, int[] rc2, String[] place) {
int r1 = rc1[0];
int c1 = rc1[1];
int r2 = rc2[0];
int c2 = rc2[1];
if (r1 == r2) {
int mid = (c1 + c2) / 2;
if (place[r1].charAt(mid) != 'X') {
return false;
}
} else if (c1 == c2) {
int mid = (r1 + r2) / 2;
if (place[mid].charAt(c1) != 'X') {
return false;
}
} else {
if (place[r1].charAt(c2) != 'X' || place[r2].charAt(c1) != 'X') {
return false;
}
}
return true;
}
}
- 배열 값 브루트포스를 이용해 해결
- 맨해튼 거리를 구하여 1 이하일 때와, 2이고 조건에 반할 경우 0 저장
- 그 외는 거리두기 준수로 참작하여 1 저장
- 시간 복잡도
O(P * N * M)
P = N = M = 5
places 반복 - O(P)
- 총
O(P * N * M) 의 시간복잡도 소요
💡 어려웠던 것 || 알게 된 것