본문 바로가기
반응형
[programmers] '문자열 계산하기' 문제 해설 및 정답코드 문제 출처https://school.programmers.co.kr/learn/courses/30/lessons/120902 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   ✅ 문제 설명주어진 문자열 my_string은 "3 + 5" 같은 형식의 수식입니다.문자열에 포함된 연산자는 +(더하기), -(빼기)만 존재합니다.my_string을 계산한 결과값을 반환해야 합니다.숫자와 연산자는 공백 하나로 구분되어 있으며, 잘못된 수식은 주어지지 않습니다.  🔍 입출력 예시my_string 결과"3 + 4"7"10 - 2"8"15 + 5 - 3"17  🛠 문제 해결 과정 1️⃣ 문자열을 수식으로 변환주어진.. 2025. 3. 24.
[programmers] '한 번만 등장한 문자' 문제 해설 및 정답코드 ✅ 문제 설명문자열 s가 주어졌을 때, 한 번만 등장하는 문자들을 찾아 사전순으로 정렬한 문자열을 반환하는 프로그램을 작성합니다. 만약 한 번만 등장하는 문자가 없다면 빈 문자열을 반환합니다.  🔍 핵심 개념 1️⃣ 딕셔너리(Dictionary)란?딕셔너리는 키(key)와 값(value) 쌍으로 데이터를 저장하는 자료구조입니다.my_dict = {'a': 1, 'b': 2}print(my_dict['a']) # 1📌 딕셔너리를 사용하면 문자 등장 횟수를 저장할 수 있습니다. 2️⃣ dict.get(key, default) 함수 이해dict.get()은 딕셔너리에서 특정 키의 값을 가져오는 함수입니다.키가 존재하면 그 값을 반환키가 없으면 기본값(default)을 반환my_dict = {'a': 1}.. 2025. 3. 19.
[Python] 알고리즘 개념20 - 이진 탐색(Binary Search) 🚀 1. 이진 탐색(Binary Search)이란?**이진 탐색(Binary Search)**은 정렬된 배열에서 원하는 값을 빠르게 찾는 탐색 알고리즘이에요. 💡 이진 탐색이 강력한 이유선형 탐색(Linear Search, O(n))보다 훨씬 빠른 **O(log n)**의 성능을 가짐큰 데이터에서 빠르게 검색 가능정렬된 배열에서만 사용할 수 있음 📌 이진 탐색의 핵심 개념중간값(Pivot) 선택: 배열의 중앙값을 선택비교 후 반으로 나누기: 찾고자 하는 값이 중간값보다 크거나 작으면 탐색 범위를 절반으로 줄임반복 or 재귀: 위 과정을 반복하며 원하는 값을 찾음➡ 정렬된 데이터에서 탐색할 때 매우 유용한 알고리즘이에요!  🚀 2. 이진 탐색과 선형 탐색 비교 📌 탐색 알고리즘 성능 비교탐색 알고.. 2025. 2. 28.
[Python] 알고리즘 개념19 - 정렬 알고리즘 (퀵 정렬, 병합 정렬, 힙 정렬) 🚀 1. 정렬 알고리즘이란?**정렬(Sorting)**은 데이터를 일정한 순서대로 재배열하는 과정이에요. 💡 정렬이 중요한 이유📂 데이터 검색을 빠르게 할 수 있어요. (예: 이진 탐색)📊 데이터를 분석하기 편리해요. (예: 최댓값, 최솟값 찾기)⚡ 알고리즘의 성능을 높일 수 있어요. (예: 그리디, 동적 계획법 활용) 📌 정렬 알고리즘의 주요 목표시간 복잡도를 최소화하여 빠르게 정렬하는 것.메모리 사용량을 줄여 효율적인 정렬을 수행하는 것.데이터의 기존 순서를 유지하는지(안정 정렬) 여부를 고려하는 것.➡ 정렬 알고리즘은 다양한 방식이 있으며, 상황에 따라 적절한 알고리즘을 선택해야 해요!  🚀 2. 대표적인 정렬 알고리즘 비교 📌 정렬 알고리즘별 성능 비교정렬 알고리즘 / 평균 시간 복잡.. 2025. 2. 27.
[Python] 알고리즘 개념18 - 분할 정복(Divide and Conquer) 🚀 1. 분할 정복(Divide and Conquer)이란?**분할 정복(Divide and Conquer)**은 문제를 작은 문제로 나누어 해결한 후, 결과를 합쳐 최종 해결하는 알고리즘 기법이에요. 💡 쉽게 이해하기🎂 큰 케이크를 자를 때, 한 번에 자르기 어려우면 조각을 내서 먹는 것!📚 두꺼운 책을 한 번에 다 읽지 않고, 챕터별로 나눠서 읽는 것!🏗 건물을 짓기 전에 층별로 구조를 나누어 설계하는 것! 📌 분할 정복의 핵심 원리분할(Divide): 문제를 더 작은 문제로 나눕니다.정복(Conquer): 작은 문제들을 해결합니다.병합(Combine): 해결한 결과들을 합쳐서 최종 답을 구합니다.➡ 즉, 문제를 작게 나누고 각각을 해결한 후, 합치는 방식이에요!  🚀 2. 분할 정복이 .. 2025. 2. 27.
[Python] 알고리즘 개념17 - 완전 탐색(Brute Force) 🚀 1. 완전 탐색이란?**완전 탐색(Brute Force)**은 가능한 모든 경우를 탐색하여 정답을 찾는 방법이에요. 💡 쉽게 이해하기🔍 비밀번호 찾기: 모든 숫자 조합을 시도하는 방식🎯 퍼즐 맞추기: 가능한 모든 방법을 시도하여 정답을 찾는 방식🎰 로또 번호 조합: 모든 조합을 생성하여 당첨 번호를 찾는 방식 📌 완전 탐색의 특징모든 경우를 탐색하기 때문에 항상 정답을 보장해요.하지만 경우의 수가 많아지면 시간이 오래 걸릴 수 있어요.문제에서 입력 크기가 작을 때 주로 사용해요.➡ 즉, 가능한 모든 방법을 하나씩 시도하는 방식이에요!  🚀 2. 완전 탐색의 대표적인 유형📌 완전 탐색이 사용되는 문제 유형 문제 유형 예제순열(Permutation)특정 숫자의 모든 순서를 생성조합(Comb.. 2025. 2. 27.
[Python] 알고리즘 개념16 - 그리디 알고리즘(Greedy Algorithm) 🚀 1. 그리디 알고리즘이란?**그리디 알고리즘(Greedy Algorithm)**은 매 순간 가장 좋아 보이는 선택(최적해)을 하면서 전체 문제를 해결하는 알고리즘이에요. 💡 쉽게 이해하기🍕 피자를 한 조각씩 먹을 때, 가장 맛있는 부분부터 먹는 것!💰 잔돈 거슬러 줄 때, 가장 큰 화폐 단위부터 사용하는 것!📆 회의 일정을 잡을 때, 가장 빨리 끝나는 회의부터 선택하는 것! 📌 그리디 알고리즘의 핵심 원칙탐욕적 선택 속성(Greedy Choice Property): 각 단계에서 최선의 선택을 해도 최적의 해를 얻을 수 있어야 해요.최적 부분 구조(Optimal Substructure): 부분 문제의 최적해가 전체 문제의 최적해를 구성해야 해요.➡ 즉, 매 순간 최적의 선택을 하면서 문제를 .. 2025. 2. 27.
[Python] 알고리즘 개념15 퀴즈 - 세그먼트 트리 📌 퀴즈 개요다음 퀴즈를 통해 세그먼트 트리(Segment Tree) 개념을 정확히 이해하고 있는지 확인해 보세요! 😊  🧩 1. 개념 이해 문제 (1) 세그먼트 트리의 특징으로 옳지 않은 것은?세그먼트 트리는 배열의 특정 구간 정보를 빠르게 처리하는 자료구조이다.세그먼트 트리는 이진 트리 기반으로 동작한다.세그먼트 트리의 업데이트 연산의 시간복잡도는 O(n)이다.세그먼트 트리는 RMQ(Range Minimum Query) 문제 해결에 유용하다. (2) 세그먼트 트리의 동작 방식에 대한 설명으로 옳지 않은 것은?세그먼트 트리는 트리를 미리 구성한 후 구간 쿼리를 O(log n) 시간에 처리할 수 있다.세그먼트 트리는 루트 노드가 전체 배열의 정보를 저장하고, 리프 노드가 개별 원소를 저장한다.특정 .. 2025. 2. 24.
[Python] 알고리즘 개념15 - 세그먼트 트리(Segment Tree) 🚀 1. 세그먼트 트리란?세그먼트 트리(Segment Tree)는 배열의 특정 구간에 대한 쿼리(합, 최소값, 최대값 등)를 빠르게 처리하는 트리 형태의 자료구조예요. 💡 왜 세그먼트 트리가 필요할까요?만약 배열의 특정 범위의 합을 여러 번 구해야 한다면, 단순한 반복문(O(n))으로는 시간이 오래 걸려요.세그먼트 트리는 한 번 구성하면(O(n)), 이후 모든 쿼리를 O(log n)에 처리할 수 있어요!최소값, 최대값, 구간 곱 등의 다양한 연산도 효율적으로 수행할 수 있어요. 📌 실생활 예시🏦 금융 데이터 분석: 특정 기간 동안 주가의 변동 합을 빠르게 구할 때📊 스포츠 통계: 특정 선수의 경기 점수 합을 효율적으로 계산할 때🏗 도시 교통 모니터링: 특정 구간의 차량 통행량을 빠르게 조회할 .. 2025. 2. 24.
[Python] 알고리즘 개념14 퀴즈 - 유니온 파인드 📌 퀴즈 개요다음 퀴즈를 통해 유니온 파인드(Disjoint Set) 개념을 정확히 이해하고 있는지 확인해 보세요! 😊  🧩 1. 개념 이해 문제 (1) 유니온 파인드(Disjoint Set)의 특징으로 옳지 않은 것은?여러 개의 집합을 관리하고, 두 원소가 같은 집합에 속해 있는지 확인할 수 있다.Find 연산을 사용하여 특정 원소가 속한 집합의 대표 노드를 찾을 수 있다.Union 연산을 사용하여 서로 다른 두 집합을 합칠 수 있다.유니온 파인드는 항상 O(1)의 시간복잡도로 동작한다. (2) 경로 압축(Path Compression)에 대한 설명으로 옳지 않은 것은?Find 연산을 수행할 때, 중간에 있는 모든 노드들이 루트 노드를 직접 가리키도록 한다.경로 압축을 적용하면 트리의 높이가 낮아.. 2025. 2. 24.
[Python] 알고리즘 개념14 - 유니온 파인드(Disjoint Set) 🚀 1. 유니온 파인드(Disjoint Set)란?유니온 파인드(Disjoint Set)는 여러 개의 집합을 관리하며, 두 원소가 같은 집합에 속해 있는지 확인하고, 서로 다른 집합을 합치는 연산을 수행하는 자료구조예요. 💡 쉽게 이해하기🎭 서로 다른 팀(집합)이 있을 때, 두 팀이 같은 그룹인지 확인하고, 필요하면 하나로 합치는 과정을 자동으로 관리하는 구조예요.🏢 회사 조직도에서 부서 간 연결 여부를 확인하거나, 친구 관계에서 같은 그룹에 속해 있는지를 판별할 때 사용돼요.🏗 도로 네트워크에서 특정 도시들이 같은 네트워크로 연결되어 있는지 확인하는 문제에도 활용돼요. ➡ 유니온 파인드를 활용하면 빠르고 효율적으로 그룹 관계를 관리할 수 있어요!**유니온 파인드(Disjoint Set)**는 .. 2025. 2. 24.
[Python] 알고리즘 개념13 - 그래프(Graph)와 탐색 (BFS, DFS) 🚀 1. 그래프(Graph)란?**그래프(Graph)**는 노드(Node)와 간선(Edge)으로 이루어진 자료구조예요. 💡 쉽게 이해하기🏙 지하철 노선도처럼 여러 지점(노드)이 선(간선)으로 연결된 구조예요.🔄 네트워크, 지도, 경로 탐색 등에 활용돼요. 📌 그래프의 기본 개념정점(Vertex, Node): 그래프의 한 지점간선(Edge): 정점 간의 연결선인접 노드(Adjacent Node): 간선으로 연결된 노드가중치(Weight): 간선에 부여된 값 (예: 거리, 비용 등) 📌 그래프의 종류무방향 그래프(Undirected Graph) → 간선이 양방향으로 연결됨방향 그래프(Directed Graph, DAG) → 간선이 한쪽 방향으로만 연결됨가중치 그래프(Weighted Graph) →.. 2025. 2. 24.
반응형