본문 바로가기

기술블로그334

[Python] 백준 2841 외계인의 기타 연주 🧑‍💻 [Python] 백준 2841 외계인의 기타 연주 Silver 1 - 스택 ![img](https://blog.kakaocdn.net/dn/cC1MR5/btr1QwKHa2P/iVlOamnCuGQNGj3KIqU18K/img.png) 코드 N, M = map(int, input().split()) stack = [[] for _ in range(7)] count = 0 for _ in range(N): l, p = map(int, input().split()) while stack[l] and stack[l][-1] > p: stack[l].pop() count += 1 if not stack[l] or stack[l][-1] < p: stack[l].append(p) count += 1 print(.. 2023. 3. 25.
[Python] 백준 1018 체스판 다시 칠하기 🧑‍💻 [Python] 백준 1018 체스판 다시 칠하기 Silver 4 - 완전 탐색 코드 N, M = map(int, input().split()) board = [list(input()) for _ in range(N)] def chess(i, j): global result change_1,change_2 = 0, 0 for row in range(8): for column in range(8): if (row + column) % 2 == 0 and board[i + row][j + column] == "B": change_1 += 1 elif (row + column) % 2 == 1 and board[i + row][j + column] == "W": change_1 += 1 if (row .. 2023. 3. 24.
[Python] 백준 10844 쉬운 계단 수 🧑‍💻 [Python] 백준 10844 쉬운 계단 수 Silver 1 - DP 코드 N = int(input()) stairs = [[0] * 10 for _ in range(N)] for i in range(1, 10): stairs[0][i] = 1 for i in range(1, N): for j in range(10): if j == 0: stairs[i][j] = stairs[i-1][j + 1] elif 0 < j < 9: stairs[i][j] = stairs[i-1][j+1] + stairs[i-1][j-1] elif j == 9: stairs[i][j] = stairs[i-1][j-1] print(sum(stairs[N-1]) % 1000000000) 2023. 3. 24.
39. 데이터 베이스 [조인] 39. 데이터 베이스 [조인] 출처 : 면접을 위한 CS전공지식 노트(책 / 강의) 조인 (Join) 조인은 두 개 이상의 테이블을 합쳐서, 하나의 결과물을 만드는 것이다 MySQL에서는 JOIN을 사용한다 내부 조인 (Inner Join) 교집합 : A와 B에 같은 데이터들을 가지고 온다 SELECT * FROM Table A as A INNER JOIN Table B as B ON A.key = B.key 왼쪽 조인(Left Outer Join) A 테이블의 행이 모두 표출되는 것이다 (A테이블 = 왼쪽 테이블) SELECT * FROM Table A as A LEFT JOIN Table B as B ON A.key = B.key 오른쪽 조인 (Right Outer Join) B 테이블의 행이 모두 .. 2023. 3. 24.
38. 데이터 베이스 [인덱스] 38. 데이터 베이스 [인덱스] 출처 : 면접을 위한 CS전공지식 노트(책 / 강의) 인덱스 인덱스는 데이터의 위치를 빠르게 찾게 해 주는 자료구조다 데이터의 위치를 빠르게 검색하면, Update, Delete의 성능도 향상될 수 있다 인덱스는, 책의 목차 페이지와 비슷하다 원하는 정보의 위치를 목차에 넣어두면, 빠르게 페이지를 찾을 수 있다 반대로 인덱스를 사용하지 않으면, 데이터 하나하나 모두 탐색을 해야 한다 즉 테이블을 조회하는 속도와 성능을 증가시킨다 시스템의 부하를 줄일 수 있다 단점 인덱스 관리를 위해 약 10%의 저장공간이 필요하다 인덱스 관리를 위해 추가 작업이 필요하다 인덱스를 잘못 사용하면, 오히려 성능이 저하된다 인덱스는 균형잡힌 B-Tree 기반으로 구축이 되어 있다 자식 노드가 .. 2023. 3. 24.
37. 데이터 베이스 [데이터 베이스의 종류] 37. 데이터 베이스 [데이터 베이스의 종류] 출처 : 면접을 위한 CS전공지식 노트(책 / 강의) 관계형 데이터 베이스 RDBMS (Relational Database Management System) 라고도 한다 대표적으로 MySQL, postgreSQL 이 있다 행과 열을 가지고 테이블 형태로 데이터를 저장한다 SQL 언어를 사용하여 테이블을 조작한다 MySQL 가장 많이 사용되는 데이터베이스다 테이블과 테이블 간의 조인을 빠르게 한다 최대 64개의 인덱스를 제공한다 대용량 데이터베이스를 위해 설계되어 있고 롤백, 커밋, 이중 암호 지원 보안 등의 기능을 제공한다 MySQL 스토리지 엔진 아키텍쳐 다양한 스토리지 엔진을 고를 수 있다 쿼리 캐시가 있어, 같은 쿼리를 다시 사용했을 때에, 빠르게 결과.. 2023. 3. 23.
Udemy : 동적 계획법 (DP) Udemy : 동적 계획법 (DP) udemy 알고리즘 코딩 테스트 Dynamic Programming 문제를 쪼개서 작은 문제의 답을 구하고, 그걸로 더 큰 문제의 답을 구하는 것을 반복 분할정복과 비슷한 느낌 배열 또는 딕셔너리를 만들어서, 작은 문제의 답을 넣는다 메모이제이션 (Memoization) 구현 : 재귀 | 저장방식 : 메모이제이션 (Top-down) cache 방식이라고 할 수 있고, 중복연산을 방지한다 직관적이라 코드 가독성이 좋다 재귀함수 호출이 많이 해서 느릴 수 있다 타뷸레이션 (Tabulation) 구현 : 반복 | 저장방식 : 타뷸레이션 (Bottom-up) 테이블을 채워나가는 것 필요 없는 부분 문제까지 전부 구하는 것 시간과 메모리를 좀 더 아낄 수 있다 DP 테이블 채워.. 2023. 3. 23.
36. 데이터 베이스 [트랜잭션과 무결성] 36. 데이터 베이스 [트갠잭션과 무결성] 출처 : 면접을 위한 CS전공지식 노트(책 / 강의) 트랜잭션 (Transaction) 하나의 논리적 기능을 수행하기 위한 작업의 단위 쿼리를 통해 데이터 베이스를 접근한다 / 여러 개의 쿼리들을 하나로 묶는 단위가 트랜잭션이다 Commit 과 Rollback Commit : 여러 쿼리가 성공적으로 처리된 상태다 즉 트랜잭션이 성공적으로 완료되었다는 것이다 Rollback : 쿼리를 실행하던 중 오류가 발생하고, 트랜잭션이 일어나기 전 상태로 돌아가는 것 즉 오류가 발생하기 전에 실행했던 모든 쿼리들을 undo한다 Rollback에서 해당 트랜잭션을 다시 시작하거나, 없앤다 ACID 트랜잭션의 4개의 특징이 있다 Atomic (원자성) 트랜잭션은 완전히 성공하던.. 2023. 3. 23.
[Python] 백준 11726 2 x n 타일 🧑‍💻 [Python] 백준 11726 2 x n 타일 Silver 3 - DP n을 1부터 5까지 타일을 임의로 채워주다보면, 피보나치 수열이란 것을 알 수 있다 cache 리스트에 0을 1001개를 넣는다 먼저 cache[1]과 cache[2]에 1과 2를 넣어 피보나치 수열을 시작한다 for문에 피보나치 수열을 계산하는 식을 넣는다 코드 Num = int(input()) cache = [0] * 1001 cache[1], cache[2] = 1, 2 for i in range(3, 1001): cache[i] = cache[i - 1] + cache[i - 2] print(cache[Num] % 10007) 2023. 3. 22.