Best Reading 💖
-
SQLD 합격 후기, 공부 방법 (+ 생활코딩 MySQL 강의 정리)
시험에 응시한 이유 '자기 분야에 시간, 돈 등을 얼마나 투자하는가'도 중요하다는 소리를 들었었고, 다른 공부하는 분들에 최소한 뒤쳐지고 싶지는 않아서 컴퓨터 관련 카테고리에서 상위권에 있는 책들을 한꺼번에 많이 구매했었다. 그중 자격증 관련 책은 하나가 정처기 책이었고 하나는 SQL 개발자 책이었다. 일단 베스트셀러에 있고 후기도 좋아 망설임 없이 책을 구매했다. 내가 처음 접한 DB는 서비스를 따라 만들어보며 mongoDB를 써봤는데 이후 DataBase Management System에 대해 더 잘 알고 싶었다. 책을 구매할 당시는 SQL이 DBMS의 종류이고, 많이 쓴다는 정도만 알고 나머지는 거의 처음 접했다. 공부한 방법 시험 몇 달 전 소마를 준비하면서(2차 코테에서 떨어졌지만) 프로그래머스..
2023.04.10
-
[프로그래머스] 기사 단원의 무기 - JS
✏️ 문제 설명 숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해야 합니다. 예를 들어, 15번으로 지정된 기사단원은 15의 약수가 1, 3, 5, 15로 4개 이므로, 공격력이 4인 무기를 구매합니다. 만약, 이웃나라와의 협약으로 정해진 공격력의 제한수치가 3이고 제한수치를 초과한 기사가 사용할 무기의 공격력이 2라면, 15번으로 지정된 기사단원은 무기점에서 공격력이 2..
2023.04.14
-
[백준 24479, 24480번] 알고리즘 수업 - 깊이 우선 탐색 1, 2
문제https://www.acmicpc.net/problem/24479https://www.acmicpc.net/problem/24480풀이- 알고리즘 수업 - 깊이 우선 탐색 1# N개의 정점과 M개의 간선으로 구성된 무방향 그래프# 정점 R에서 시작해 깊이 우선 탐색한 노드 방문 순서 출력import syssys.setrecursionlimit(10 ** 6)input = sys.stdin.readline# 정점의 수, 간선의 수, 시작 정점N, M, R = map(int, input().split())graph = [[] for _ in range(N+1)]visited = [0] * (N+1)cnt = 1def dfs(graph, visited, r): global cnt visited..
2024.04.29
-
[공지] Velog로 블로그 이전중 🚚
개발 공부를 시작하고 처음 써오던 블로그를 이전하고 있습니다.현재 tistory 블로그를 아예 안쓰고 싶진 않아서 백준 문제 풀이 정도만 이곳에 남기고 있습니다.제 최근 근황이나 프로젝트, 다른 다양한 포스팅을 보고 싶으시면 Velog 방문해주시면 감사합니다 😃 https://velog.io/@hi-rachel/posts hi-rachel (Rachel) / 작성글 - velog기존 블로그: https://hi-rachel.tistory.comvelog.io 앞으로 계속 어디에 포스팅할지는 모르겠지만 글을 쓰는 곳이 크게 중요하진 않은 것 같아요.Velog가 UI가 예쁘지만 버그도 많고.. 티스토리는 좀 덜 예쁘고.. 장단점이 있는 것 같습니다.여러가지 시도해 보고 좋은 글로 ..
2024.04.21
-
[백준 24444, 24445번] 알고리즘 수업 - 너비 우선 탐색 1, 2
문제https://www.acmicpc.net/problem/24444
2024.04.21
-
[백준 28279번] 덱 2 - Python, 덱 주요 메서드/시간 복잡도
문제 28279번: 덱 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다. www.acmicpc.net 풀이 import sys from collections import deque input = sys.stdin.readline deq = deque() N = int(input()) for _ in range(N): order = list(map(int, input().split())) if order[0] == 1: deq.appendleft(order[1]) elif order[0] == 2: deq.append(order[1]) elif order[0] == 3: if (deq):..
2024.04.03
-
[백준 1890번] 점프 - Python
문제 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net 풀이 import sys input = sys.stdin.readline n = int(input()) game_map = [list(map(int, input().split())) for _ in range(n)] dp = [[0] * n for _ in range(n)] dp[0][0] = 1 def move(): for i in range(n): for j in range(n): k = game_map[i][j] if k == 0: cont..
2024.03.28
-
[백준 10844번] 쉬운 계단 수 - Python
문제 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 import sys input = sys.stdin.readline n = int(input().rstrip()) d = [[0] * 10 for _ in range(n+1)] for i in range(1, 10): d[1][i] = 1 for i in range(2, n+1): for j in range(10): if j == 0: d[i][j] = d[i-1][1] elif j == 9: d[i][j] = d[i-1][8] else: d[i][j] = d[i-1][j-1] + d[i-1][j+1] print(sum(d[n]) % 1000000000) 이해하는데 ..
2024.03.22
Fresh Pot ☕️
-
[백준 24479, 24480번] 알고리즘 수업 - 깊이 우선 탐색 1, 2
문제https://www.acmicpc.net/problem/24479https://www.acmicpc.net/problem/24480풀이- 알고리즘 수업 - 깊이 우선 탐색 1# N개의 정점과 M개의 간선으로 구성된 무방향 그래프# 정점 R에서 시작해 깊이 우선 탐색한 노드 방문 순서 출력import syssys.setrecursionlimit(10 ** 6)input = sys.stdin.readline# 정점의 수, 간선의 수, 시작 정점N, M, R = map(int, input().split())graph = [[] for _ in range(N+1)]visited = [0] * (N+1)cnt = 1def dfs(graph, visited, r): global cnt visited..
2024.04.29
-
[공지] Velog로 블로그 이전중 🚚
개발 공부를 시작하고 처음 써오던 블로그를 이전하고 있습니다.현재 tistory 블로그를 아예 안쓰고 싶진 않아서 백준 문제 풀이 정도만 이곳에 남기고 있습니다.제 최근 근황이나 프로젝트, 다른 다양한 포스팅을 보고 싶으시면 Velog 방문해주시면 감사합니다 😃 https://velog.io/@hi-rachel/posts hi-rachel (Rachel) / 작성글 - velog기존 블로그: https://hi-rachel.tistory.comvelog.io 앞으로 계속 어디에 포스팅할지는 모르겠지만 글을 쓰는 곳이 크게 중요하진 않은 것 같아요.Velog가 UI가 예쁘지만 버그도 많고.. 티스토리는 좀 덜 예쁘고.. 장단점이 있는 것 같습니다.여러가지 시도해 보고 좋은 글로 ..
2024.04.21
-
[백준 24444, 24445번] 알고리즘 수업 - 너비 우선 탐색 1, 2
문제https://www.acmicpc.net/problem/24444
2024.04.21
-
[백준 28279번] 덱 2 - Python, 덱 주요 메서드/시간 복잡도
문제 28279번: 덱 2 첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다. www.acmicpc.net 풀이 import sys from collections import deque input = sys.stdin.readline deq = deque() N = int(input()) for _ in range(N): order = list(map(int, input().split())) if order[0] == 1: deq.appendleft(order[1]) elif order[0] == 2: deq.append(order[1]) elif order[0] == 3: if (deq):..
2024.04.03
-
[백준 1890번] 점프 - Python
문제 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net 풀이 import sys input = sys.stdin.readline n = int(input()) game_map = [list(map(int, input().split())) for _ in range(n)] dp = [[0] * n for _ in range(n)] dp[0][0] = 1 def move(): for i in range(n): for j in range(n): k = game_map[i][j] if k == 0: cont..
2024.03.28
-
[백준 10844번] 쉬운 계단 수 - Python
문제 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 import sys input = sys.stdin.readline n = int(input().rstrip()) d = [[0] * 10 for _ in range(n+1)] for i in range(1, 10): d[1][i] = 1 for i in range(2, n+1): for j in range(10): if j == 0: d[i][j] = d[i-1][1] elif j == 9: d[i][j] = d[i-1][8] else: d[i][j] = d[i-1][j-1] + d[i-1][j+1] print(sum(d[n]) % 1000000000) 이해하는데 ..
2024.03.22
-
[4963번] 섬의 개수 - Python
문제 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 풀이 import sys input = sys.stdin.readline from collections import deque # 한 정사각형과 가로, 세로 또는 대각선으로 연결되어 있는 사각형은 걸어갈 수 있음 dx = [-1, 0, -1, +1, +1, 0, +1, -1] dy = [-1, -1, +1, 0, +1, +1, -1, 0] def bfs(i, j): queue.append((i, j)) visited[i][j] = 1 while que..
2024.03.19
-
[백준 11725번] 트리의 부모 찾기 🤯
문제 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 예제 입력 1에 대한 트리 1 / \ 6 4 / / \ 3 7 2 / 5 BFS import sys input = sys.stdin.readline from collections import deque # 노드의 개수 N (2 ≤ N ≤ 100,000) N = int(input().rstrip()) tree = [[] for _ in range(N+1)] for i in range(1, N): a, b = map(int, input().split()) tree[a].append(b) tree[b].append(a) ..
2024.03.15
-
[백준 2468번] 안전 영역 - Python
문제 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 풀이 from collections import deque import sys input = sys.stdin.readline N = int(input()) max_rain = 0 graph = [] for _ in range(N): row = list(map(int, input().split())) graph.append(row) max_row = max(row) max_rain = max(max_rain, max_row) now_rain = 1 max_safe..
2024.03.14
-
[백준 2589번] 보물섬 - PyPy3
문제 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 예전에 푼 문제인데 오랜만에 다시 푸니 이틀 정도 애먹었다.. python으로 제출시 시간 초과가 나서 PyPy3로 제출. 풀이 # 2589번 보물섬 # 육지 L, 바다 W # 상하좌우 육지 이동 가능, 한 칸 이동시 한 시간 # 보물 -> 서로 간에 최단 거리로 이동(BFS)하는데 있어 가장 긴 시간이 걸리는 육지 두 곳에 나뉘어 묻혀있음. # -> 끝에서 끝으로 이동시 서로 가장 긴 시간이 걸리는 육지에서 최단거리를 구해라! (완전 탐색) # 보물이 묻혀 ..
2024.03.14
-
[백준 11724번] 연결 요소의 개수 - Python, DFS/BFS
문제 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어 www.acmicpc.net 정점(N)과 간선(M)의 개수가 주어질 때 연결 요소의 개수를 구하라. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 간선 u, v (1 ≤ u, v ≤ N, u ≠ v) 대표적인 DFS/BFS 문제이다. 시간 제한 3초, 메모리 제한 512 MB에 주의해야 한다. 풀이 ✏️ DFS import sys input = sys.stdin.readline sys.setrecursion..
2024.03.12
-
[백준 2667번] 단지번호붙이기 - Python
문제 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 풀이 # 1 - 집이 있는 곳, 0 - 집이 없는 곳 # 단지 수 출력, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력해라. import sys input = sys.stdin.readline # 정사각형 지도 크기 n = int(input()) square_map = [] for i in range(n): square_map.append(list(map(int, input().rstrip()))) cnt = 0 result = 0 def dfs(x..
2024.03.09
-
[구름톤 트레이닝 풀스택 2기] 2차 스터디 결과 2등 수상, 2달 회고
23.10.12 ~ 23.11.30 동안 진행된 2차 스터디가 끝났다. 2차 스터디에서 새로운 분들과 스터디를 하게 되었는데 다들 너무 좋은 분들이어서 상호존중하는 분위기에서 잘 학습할 수 있었다. 팀원분들이 아침마다 매일 파이팅 메세지를 보내주셔서 진짜 스터디 기간 내내 기분 좋게 시작할 수 있었다~ 2차 스터디 목표 2차 스터디 성과 - CS, 알고리즘 스터디 100% 참석 - 혼공컴운 완독 - 꾸준히 기록, 문서화 - 매일 TIL하는 습관 - 긍정적이고 서로 배려하는 팀 분위기에서 많이 배움(소프트 스킬) CS 구름에서 제공한 혼공컴운 책으로 다 같이 스터디하니 혼자 읽을 때보다 체계적으로 빠르게 읽어 완독까지 할 수 있었다. 매주 2회 랜덤 발표로 스터디하면서 헷갈리거나 모르는 내용 토론하면서도 ..
2023.11.30
-
연결된 GitHub 저장소 초기화하기
마주친 상황: 원격 저장소를 새로 만들어 로컬에서 기존에 연결된 저장소를 없애고 새롭게 만든 저장소로 연결하고자 함. git 초기화 로컬 저장소의 .git directory 삭제하기 rm -rf ./git 로컬 저장소 초기화 git init 이후 원래 연결해주던대로 연결해주고 첫 커밋을 해주고 올려준다~ 다시 연결 후 커밋, 푸시 git add . git commit -m "init" git branch -M main git remote add origin https://github.com/github-id/repository.git git push -u origin main 끝!
2023.11.05
-
[DFS/BFS] 탐색 알고리즘 이해하기, 주요 예시 문제
📌 DFS, BFS에서 중요한, 알아야 할 개념 - 스택 - 큐 - 재귀 함수 📍 반복문, 재귀 함수 2가지 방식으로 구현한 팩토리얼(!) 예제 # 반복적으로 구현한 n! def factorial_iterative(n): result = 1 for i in range(1, n + 1): result *= i return result # 재귀적으로 구현한 n! def factorial_recursive(n): if n 연결 리스트 이용 -> 파이썬 2차원 리스트(append, 메소드 제공) 이용하면 된다. - 연결된 정보만을 저장하기 때문에 메모리를 효율적으로 사용 -> 인접 행렬 방식에 비해 특정한 두 노드가 연결되어 있는지에 대한 정보를 얻는 속도가 느리다. 그래프 그래프는 노드(Node)와 간선(Ed..
2023.10.31