본문 바로가기
728x90
반응형

알고리즘7

[C++] 실전 프로젝트로 배우는 코딩: 작은 게임 만들기 💻 안녕하세요! 오늘은 간단한 틱택토 게임을 만들면서 C++ 코딩 실력을 한 단계 끌어올리는 시간을 가져보겠습니다. 이 프로젝트를 통해 기본 문법부터 체계적인 코드 설계까지 경험하며 실력 향상에 큰 도움이 될 것입니다. 함께 시작해볼까요?1. 틱택토 게임 구현 (핵심 기능)🎮틱택토는 간단하지만 게임 로직과 구조 설계를 배우기에 아주 좋은 예제입니다. 다음 단계에 따라 게임을 구현해 보겠습니다.핵심 구현 요소:게임 보드 관리: 2차원 배열( std::vector> )을 사용하여 게임 상태를 저장합니다. 각 칸은 'X', 'O', 또는 빈 칸(' ')으로 표현됩니다.사용자 입력 처리: 사용자가 입력한 위치가 유효한지 검증합니다. (범위 초과, 이미 채워진 칸 등)승리 조건 확인: 가로, 세로, 대각선 방향으로.. 2025. 1. 9.
[C++] STL 활용법: 벡터, 리스트, 맵으로 데이터 다루기 💡 C++의 표준 템플릿 라이브러리(STL)는 데이터를 효율적으로 관리하고 처리하기 위한 강력한 도구 모음이에요. 오늘은 STL의 주요 구성 요소인 벡터, 리스트, 맵을 중심으로 살펴보고, 활용 팁도 함께 공유할게요! 😊 준비되셨다면, 바로 시작해 볼까요? 🚀1. 벡터: 동적 배열의 강력한 대안 📊벡터는 크기가 동적으로 변하는 배열로, 요소의 추가와 삭제가 용이합니다.(1) 기본 사용법📌 예제#include #include std::vector numbers = {1, 2, 3, 4, 5};numbers.push_back(6); // 요소 추가numbers.pop_back(); // 마지막 요소 삭제for (int num : numbers) { std::cout (2) 주요 함수push_ba.. 2025. 1. 6.
[알고리즘]고급 알고리즘 2: 투 포인터, 해시셋🤔✨ 안녕하세요, 개발자 여러분! 오늘은 투 포인터라는 간단하지만 강력한 알고리즘 테크닉을 소개할게요. 배열이나 문자열을 다룰 때 정말 유용하답니다. ✨ 특히, 교집합 찾기부터 고급 문제까지 다양한 활용이 가능해요.투 포인터가 뭐예요? 🤔투 포인터는 두 개의 포인터(인덱스)를 사용해 배열이나 리스트를 탐색하며 문제를 푸는 기법이에요. 포인터를 조작해 원하는 결과를 효율적으로 찾아낼 수 있답니다!1️⃣ 초급: 두 배열의 교집합 찾기 🤝두 정렬된 배열에서 공통 요소를 찾아보는 문제를 투 포인터로 풀어볼까요?핵심 논리 🧠⚡ :두 포인터를 배열의 시작점에 둬요!각 배열의 첫 번째 요소부터 비교를 시작합니다.포인터 값 비교하기 👀두 값이 같다면?→ "찾았다!" 🙌 공통 요소로 결과 리스트에 추가하고, 두 포인.. 2024. 12. 26.
[알고리즘]수학 알고리즘: 소수와 약수, 조합과 순열 🚀✨ 수학 알고리즘은 다양한 문제를 빠르고 정확하게 해결하는 열쇠예요. 오늘은 대표적인 수학 알고리즘들과 그 활용법을 살펴보며 수학적 사고를 한층 업그레이드해 보아요! ✨1. 소수와 약수 🌟소수는 1과 자기 자신만으로 나누어지는 수로, 컴퓨터 과학에서 암호학, 난수 생성 등 많은 곳에서 활용돼요. 이와 관련한 대표적인 알고리즘으로 에라토스테네스의 체와 유클리드 호제법이 있어요!에라토스테네스의 체 🧹소수를 찾는 효율적인 알고리즘으로, 2부터 특정 숫자까지의 소수를 한 번에 구할 수 있어요.public void sieveOfEratosthenes(int n) { boolean[] isPrime = new boolean[n + 1]; Arrays.fill(isPrime, true); isPrim.. 2024. 12. 24.
[알고리즘]문자열 알고리즘: 패턴 매칭, 트라이✏️✨ 문자열 알고리즘은 컴퓨터 과학에서 데이터를 빠르고 정확하게 처리하기 위한 필수 도구입니다. ✨ 여기에서는 대표적인 문자열 알고리즘과 자료구조를 살펴보고, 각 알고리즘의 핵심 포인트와 활용법을 자세히 알아보겠습니다! 🚀1. 패턴 매칭패턴 매칭은 문자열에서 특정 패턴을 빠르게 찾는 기술입니다. 주요 알고리즘으로 KMP 알고리즘과 라빈-카프 알고리즘이 있습니다.🎯 KMP (Knuth-Morris-Pratt) 알고리즘KMP 알고리즘은 문자열 검색에서 중복 계산을 피하기 위해 접두사와 접미사 정보를 활용합니다. 효율적이고 안정적인 패턴 매칭 방법입니다.✏️ 코드public int[] computeLPS(String pattern) { int m = pattern.length(); int[] lps .. 2024. 12. 24.
[알고리즘]동적 계획법(Dynamic Programming, DP)🌈🌟 안녕하세요! 🙌 오늘은 프로그래머라면 한 번쯤은 마주칠 **동적 계획법(Dynamic Programming, DP)**을 재밌고 쉽게 풀어보려고 해요! 🎉 하나씩 단계별로 알아보며 "어? 생각보다 쉽네!" 라는 감탄사가 나오도록 해볼게요. 🌟🧩 1. 기본 DP 문제🎯 피보나치 수열 (Fibonacci Sequence)DP의 입문은 역시 피보나치죠! 🌀 재귀로 계산하면 시간이 너무 오래 걸리지만, DP를 활용하면 빠르게 계산 가능해요! 💨피보나치 수열은 재귀로도 계산할 수 있지만, 동일한 계산을 반복하면서 시간 복잡도가 급격히 증가합니다. DP는 이런 중복 계산을 제거하는 핵심 기법입니다. ✏️ 코드public int fibonacci(int n) { if (n  📌 핵심 개념작은 문제.. 2024. 12. 24.
[알고리즘]기본 자료구조와 알고리즘🌀📊 자료구조와 알고리즘은 프로그래밍의 기초이며, 효율적인 코드를 작성하기 위해 반드시 알아야 하는 필수 주제입니다. 이번 글에서는 주요 정렬, 탐색 알고리즘과 해시 구조, 그리고 스택과 큐의 사용법에 대해 자세히 알아보겠습니다! 😊1. 정렬 알고리즘정렬은 데이터를 특정 순서로 재배열하는 과정입니다. 다양한 정렬 알고리즘 중 대표적인 몇 가지를 소개해 볼게요! 📊1.1 삽입 정렬원리: 데이터를 하나씩 정렬된 부분에 삽입하면서 정렬을 완성하는 방식입니다.시간 복잡도: O(n²) (최악의 경우)특징: 작은 데이터셋에서 효율적이며, 구현이 간단합니다.public void insertionSort(int[] arr) { for (int i = 1; i = 0 && arr[j] > key) { .. 2024. 12. 23.
728x90
반응형