전체 글 19

[백준][투포인터] 99클럽 코테 스터디 5일차 TIL + 수열

오늘의 학습 키워드투포인터나는 투포인터라는 용어 자체를 처음 들어봤는데,투포인터로 푼다는 걸 딱 듣자마자 바로 풀리네? 넘 신기하다! 😚 오늘의 회고🌱 오늘의 문제https://www.acmicpc.net/problem/2559백준 문제는 미리보기가 안 뜨나 보다. 어제도 안 떴는데.. 흠. 배열의 길이 n과 간격 k가 주어지고, 온도 값을 담은 배열이 이어서 주어진다.연속 k간의 온도의 합이 최대가 되는 값을 구하는 문제이다.  🌱 나의 시도시도1.처음에 시도한 방법은 타임 아웃이 떴다.그 이유는 사실 명확하다. 아래 코드는 아주 간결하고 깔끔해보이지만 매우 비효율적인 코드이다.1. 우선 반복문을 통해 O(n)번 돌고 있다.2. 내부에서 sum(tem[i:i+k]) 함수는 O(n^2)으로 동작할 ..

Daily/Coding Test 2025.04.04

[백준][DFS] 99클럽 코테 스터디 4일차 TIL + 안전 영역 (+ RecursionError 핸들링 하기)

오늘의 학습 키워드DFS, 시뮬레이션 오늘의 회고🌱 오늘의 문제 https://www.acmicpc.net/problem/2468(왜 미리보기가 안 불러와질까 🥹)2차원 배열이 주어지고 각각의 칸에는 지형의 높이 정보를 나타내는 자연수 값이 들어간다.이 문제에서는 장마철에 특정 높이 이상 비가 와 일부 지형이 물에 잠겼을 때, 물에 잠기지 않은 안전 영역의 최대 개수를 묻고 있다.여기서 안전 영역은 상하좌우로 인접해 있는 지점들이 최대를 이루는 영역을 말한다.  🌱 나의 시도최대 영역에 대한 개수를 세는 문제는 마침 어제 공부한 DFS 문제의 예시와 비슷했다.그래서 나는 이 문제를 재귀 함수를 이용한 DFS로 구현해보려고 한다.또한 이 문제에서는 장마철에 오는 강우량의 '높이'에 대해 명시하지 않으..

Daily/Coding Test 2025.04.04

[알고리즘] DFS(Depth-First Search)와 BFS(Breadth-First Search)

0. IntroductionDFS와 BFS를 별도 게시물로 정리하려고 했으나 결국 하나의 게시물로 정리하게 되었다.둘은 이름이 비슷해서인지 잘 헷갈리는 것 같다.같은 게시물 안에서 동일한 그래프로 비교하면서 보면 더 잘 이해할 수 있을 것이라고 판단하였다.단, BFS, DFS 문제풀이는 본 게시물에서 다루지 않는다. 앞으로 DFS, BFS 문제를 공부하면서 차근차근 하나씩 추가해보겠다. 1. DFS (Depth-First Search, 깊이 우선 탐색)1. 정의이름에서 알려주는 것처럼 깊이를 우선적으로, 즉, 가장 깊이 위치하는 노드까지 탐색하는 알고리즘이다.DFS 문제를 풀 때는 스택을 활용하면 더 쉽게 해결할 수 있다.이것은 예시를 보면 더욱 잘 이해할 수 있으니 예시를 함께 보면서 확인하도록 하자...

[프로그래머스][시뮬레이션] 99클럽 코테 스터디 3일차 TIL + 바탕화면 정리

오늘의 학습 키워드시뮬레이션 오늘의 회고🌱 오늘의 문제https://school.programmers.co.kr/learn/courses/30/lessons/161990 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 컴퓨터 바탕화면을 좌표로 가정한다. 전체 파일을 모두 선택하기 위하여 왼쪽 위 지점부터 오른쪽 아래지점까지 드래그할 때, 최단 거리를 만들기 위한 시작점과 끝점을 찾는 문제이다.   🌱 나의 시도이 문제에 대해 내가 해결한 알고리즘의 시간 복잡도는 이중 반복문을 사용하므로 O(n^2)이다. 그러나 wallpaper의 길이가 최대 50, wallpaper의 내부 길이가 최대 50으로 최악..

Daily/Coding Test 2025.04.03

[백준] 99클럽 코테 스터디 2일차 TIL + 피보나치 비스무리한 수열

오늘의 학습 키워드메모이제이션, 시뮬레이션 오늘의 회고🌱 오늘의 문제피보나치 문제의 변형된 문제이다. 피보나치 문제가 특정 위치 n의 값에 대하여 n-1, n-2 연속된 두 값의 합으로 구해나갔다면, 이 문제는 n-1, n-3과 같이 한 칸을 띄운 두 값의 합으로 구하는 문제이다.이 외의 조건이 크게 달라지는 부분은 없어 기존의 피보나치 구하는 방식으로 구하면 크게 문제될 것이 없다. 🌱 나의 시도입력 값의 최대값이 116으로 크지 않아 복잡한 알고리즘을 사용하기 보다는 짧고 가독성 좋은 코드를 사용하는 것이 좋다는 판단을 했다. 동일한 연산을 반복하지 않으므로 재귀 함수가 불필요하며, 이전 연산 값을 저장해두고 사용할 수 있는 메모이제이션 정도면 충분하다. 현재 단계적으로 문제를 풀기 때문에 시간 ..

Daily/Coding Test 2025.04.02

[자료구조] 그래프(Graph)와 탐색(Search)

🌱 그래프 그래프는 노드와 간선으로 이루어진 자료 구조이다. 크게 노드와 엣지(간선)으로 구성되어 있다.그래프는 간선으로 연결된 노드들 간 이동할 수 있는데, 이렇게 간선으로 연결된 노드들을 인접하다(Adjacent)고 한다.  🌱 그래프 표현 방법그래프에서 인접한 노드들간의 관계를 나타내는 방법으로 크게 인접 행렬(Adjacency matrix)과 인접 리스트(adjacency list)가 있다.1. 인접 행렬인접 행렬은 단어 그대로 "행렬"의 형태로 인접한 노드 간의 관계를 나타낸 것을 의미한다.행의 노드와 열의 노드 간의 거리를 행렬값으로 확인할 수 있다. 따라서 인접한 노드 조회를 할 때 시간 측면에서 O(1)로 아주 빠르다.그러나 이 방식은 메모리 측면에서 비효율성을 야기할 수 있기에 조심해..

[자료구조] 스택(stack)과 큐(queue)

🌱 스택 (Stack)1. 기본 개념스택은 기본적으로 LIFO(Last In First Out), 혹은 선입후출 구조라고 한다. 즉, 나중에 들어간 것이 맨 처음 나온다. 다시 말 하면 처음 들어간 것이 맨 뒤에 나오는 구조이다. 동굴을 떠올리면 스택 구조를 쉽게 상상할 수 있다.2. 이상 상태스택은 고정된 크기를 갖는 자료구조이다. 따라서 고정된 크기에서 벗어나는 액션을 취할 때 두 가지 이상 상태를 가질 수 있다.1. 오버플로우(Overflow): 자료구조가 수용 가능한 범위를 가득 채운 상태해서, 초과하여 삽입 연산을 수행하려고 할 때 발생하는 현상2. 언더플로우(Underflow): 자료구조에 데이터가 들어 있지 않은 상태에서 삭제 연산을 수행하려고 할 때 발생하는 현상* 예전에는 위 두 용어가..

[문법] 영포자의 토익 박살내기 1일차 - 대명사

오늘 배운 것 🌱1. 인칭 대명사인칭 대명사는 나를 포함한 1인칭, 너를 포함한 2인칭, 그 외 3인칭으로 구성되어 있다.또한 주어로 사용할 수 있는 주격, 소유를 나타내는 소유격, 목적어로 사용할 수 있는 목적격, 이 외 소유 대명사와 재귀 대명사로 사용된다.주의할 점은 남성의 소유격과 소유 대명사가 'his'로 형태가 같으며, 여성의 소유격과 목적격이 'her'로 형태가 같다는 것이다. 2. 인칭대명사의 사용 위치1. 주격은 주어, 목적격은 목적어의 위치에 사용된다.2. 소유격은 명사의 앞에서 명사를 수식한다. 단, 명사를 수식하는 형용사 앞에서도 사용이 가능하다. 또한 명사를 수식하는 형용사를 부사가 수식하고 있다면, 소유격은 그 부사 앞에 위치한다.3. 소유 대명사는 '소유격+명사' 이므로 주어..

Daily/English 2025.04.01

[백준] 소수 구하기

문제 링크: https://www.acmicpc.net/problem/1929   오늘의 교훈: 입출력 범위를 잘 보자.... 소수 구하는 알고리즘은 처음 코딩 걸음마를 하던 시절부터 풀어왔다.그런데 오늘 문득 든 의문은 이것보다 더 효율적으로 푸는 방법은 없을지 궁금했다.우선 오늘 푼 방법 먼저 정리하고 효율적으로 풀 수 있는 방법이 있는지 추가로 찾아보자. 풀이import mathm, n = map(int, input().split())for x in range(m, n+1): isPrime = True if x != 1 else False for i in range(2, int(x**0.5)+1): if x % i == 0: isPrime = False if isPrim..

Daily/Coding Test 2025.03.31

[리트코드] 99클럽 코테 스터디 1일차 TIL + Top K Freqent Element

오늘의 학습 키워드딕셔너리 정렬, Counter 클래스(Collections 모듈) 오늘의 회고2분기 취업을 목표로 매일 코딩 테스트 풀기를 도전하고 있다.P인간 타파개는 혼자서는 작심이틀이 분명할 것이기에 항해99에서 습관 만들기 프로그램인 99클럽에 지원하였다.99클럽은 매일 오늘의 코딩테스트 문제를 제공하고, LMS에 해당 문제를 풀었다는 인증을 함으로써 습관을 만들 수 있도록 도와준다. 오늘 1일차에는 아래와 같은 내용을 진행하였다.1. OT in 디스코드2. 보너스 문제 제공 (30분간 타임어택)3. 오늘의 문제 풀이 & TIL (개인이 각자 진행) 🌱 오늘의 문제보너스 문제는 리트 코드(Leet Code)의 347. Top K Freqent Element 문제를 풀었다.정수 배열 nums가 ..

Daily/Coding Test 2025.03.31