본문 바로가기

Algorithm/PS 이론

(4)
Solved.ac: 알고리즘 문제 풀이를 위한 필수 사이트 Solved.ac는 백준 온라인 저지(BOJ)를 기반으로 알고리즘 문제 풀이를 보다 효율적으로 할 수 있도록 도와주는 서비스이다. 백준은 국내에서 가장 많은 알고리즘 문제를 제공하는 사이트로 유명한데, Solved.ac는 이러한 문제들을 효율적으로 정리하고 난이도, 추천 문제 등을 제공해 사용자가 학습 목표를 체계적으로 세울 수 있도록 도와준다.그리고 재미있는 사실 하나! 이 훌륭한 서비스를 만든 사람이 바로 내 직속 선배이신 서강대 컴퓨터공학과 박수현님 이라는 점이다.처음에 베타 버전으로 시작했을 때만 해도 이렇게 커질 줄은 몰랐는데, 이제는 아예 회사를 차리고 대표님이 되셨다.Solved.ac의 주요 기능Solved.ac는 문제 풀이를 시작하는 초보자부터 고급 알고리즘 문제를 도전하는 상급자까지 모두..
알고리즘 시간 복잡도 계산하기: 효율성을 높이자! 시간 복잡도(Time Complexity)는 알고리즘이 문제를 해결하는 데 걸리는 시간을 수학적으로 표현한 것으로, 입력의 크기에 따라 실행 시간이 어떻게 증가하는지 나타낸다. 이 시간 복잡도 계산은 효율적인 알고리즘을 설계하고, 문제의 제약 조건에 맞게 최적의 접근을 찾기 위한 핵심적인 과정이다.이번 글에서는 시간 복잡도를 계산하는 기본 개념과 방법을 설명하고자 한다.시간 복잡도를 왜 계산해야 할까?시간 복잡도를 계산하는 것은 알고리즘의 효율성을 예측하기 위해 중요하다. 시간 제한이 있는 프로그래밍 문제에서, 알고리즘이 제한 시간 내에 문제를 해결할 수 있을지 판단하려면 시간 복잡도를 알고 있어야 한다.시간 복잡도를 표현하기 위해 O 표기법(Big-O Notation), Θ 표기법(Theta Notat..
프로그래밍 문제 해결을 위한 가이드: 접근법, 자료 구조, 시간 복잡도 분석까지 프로그래밍 문제 해결을 위한 접근법프로그래밍 문제 해결 능력(PS, Problem Solving)은 여러 분야에서 유용하며, 특히 컴퓨터 과학과 관련된 학문이나 직무에서 필수적이다. 문제를 푸는 데 필요한 자료 구조와 알고리즘, 그리고 제한 조건을 이해하고 이를 코드로 구현하는 것이 중요한데, 여기에는 몇 가지 핵심 과정이 있다. 이번 글에서는 문제 해결에 필요한 다양한 접근 방식과 대회 및 학습 자료들을 소개한다.문제 해결 실력을 쌓아가는 5단계 비법프로그래밍 문제를 푸는 과정은 마치 보물찾기 같다. 처음에는 막막할 수 있지만 단계를 따라가다 보면 어느새 보물에 가까워진다. 하나하나 단계를 살펴보자.1. 문제를 정확히 이해하기문제를 마주하면 일단 목표부터 확실히 잡아야 한다. 입력과 출력 형식부터 제한..
세그먼트 트리 (Segment Tree) - C/C++로 설명 세그먼트 트리(Segment Tree)는 효율적으로 구간합이나 최소값, 최대값을 구하는 데 매우 유용한 자료구조이다. 특히, 데이터가 자주 업데이트되면서도 특정 구간의 값을 빠르게 조회해야 하는 상황에서 효과적이다. 다음은 세그먼트 트리의 기본 개념과 사용법을 예제를 통해 정리한 내용이다.세그먼트 트리 - 쓰임새세그먼트 트리는 연속적인 데이터가 있을 때, 특정 범위의 합/ 최소, 최대값 등을 구할 때 유용하게 활용될 수 있다.특정 구간의 합을 구하는 방법에 대해 살펴보자면, 일반적으로 다음과 같은 방법이 떠오른다..   1. $arr[l] + arr[l+1] + ... + arr[r-1] + arr[r]$을 일일히 더해 구하는 방법  2. $i$번째까지의 합을 저장하는 배열을 하나 더 만들어서, 조금 더..