시간복잡도 4

[백준][투포인터] 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

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

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

[백준] 소수 구하기

문제 링크: 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

[개념] 복잡도(Complexity)

이미지 출처: https://www.scholarhat.com/tutorial/datastructures/complexity-analysis-of-data-structures-and-algorithms 정의: 알고리즘의 성능을 나타내는 척도종류: 시간 복잡도, 공간(메모리) 복잡도* 일반적으로 복잡도라고 하면 시간 복잡도를 의미한다.표기 방법: 빅오 표기법* 빅오(Big-O) 표기법이란, 구현한 알고리즘을 시간 혹은 메모리에 대한 함수로 나타낸 후, 그 함수의 상한만을 고려한 표기방식이다.주의 사항: 소스 코드를 정확히 분석하여 복잡도를 계산하여야 한다. 만약 내부적으로 함수를 호출한다면 내부 함수도 복잡도를 계산해주어야 한다.코딩 테스트 시 제한 기준 (일반적인 상황)- 시간 복잡도: 1초, O(N^3..