파이썬16 백준 19644번: 좀비 떼가 기관총 진지에도 오다니 문제풀이 문제 설명기관총 사거리 ( M_L ): 기관총이 좀비에게 도달할 수 있는 거리 기관총 살상력 ( M_K ): 기관총이 좀비에게 주는 데미지 수류탄 개수 ( C ): 남은 수류탄 개수 진지 앞쪽 거리 ( L ): 좀비가 등장하는 총 거리 좀비 체력 ( Z_i ): 각 거리에서 좀비의 체력 좀비는 기관총 사거리 내에서 최대 ( M_K ) 데미지를 받습니다. 만약 이를 초과하는 체력이 남으면 수류탄을 사용해야 합니다. 수류탄이 없으면 게임은 실패(NO), 끝까지 방어할 수 있으면 성공(YES) 입니다. 문제 풀이 과정1. 초기 입력 설정import sysinput = sys.stdin.readlineL = int(input()) # 진지 앞쪽 거리M_L, M_K = map(int, input()... 알고리즘공부(Algorithm Study)/문제풀이(ProblemSolving) 2024. 12. 7. 백준 1059번: 좋은 구간 문제 풀이 1. 문제 개요백준 1059번 좋은 구간 문제는 특정 정수 (n)을 포함하지 않는 좋은 구간을 찾아, 그 안에서 (n)보다 작은 숫자와 큰 숫자 사이의 조합을 구하는 문제입니다.주어진 숫자 리스트에서 (n)을 포함하지 않는 구간을 찾아 가능한 조합 수를 계산해야 하며, 수학적 사고와 간단한 구현을 요구합니다.2. 접근 방법입력 데이터 처리 및 정렬입력받은 리스트를 정렬하고, 정렬된 리스트의 인접한 수를 사용하여 (n)이 속한 구간을 찾습니다.구간 계산(l): (n)보다 작은 가장 큰 수 + 1(r): (n)보다 큰 가장 작은 수 - 1이 구간을 기준으로 (n)을 포함하지 않는 조합을 계산합니다.조합 공식(n)보다 작은 수에서 (n)보다 큰 수로 가는 조합: ((r - n + 1) \times (n - l.. 알고리즘공부(Algorithm Study)/문제풀이(ProblemSolving) 2024. 12. 5. 백준 20044번: Project Teams 문제 풀이 1. 문제 개요백준 20044번, Project Teams 문제는 주어진 개발자들의 능력치를 이용해 팀을 구성하고, 각 팀의 능력치 합 중 최댓값을 최소화하는 것이 목표입니다. 이를 효율적으로 해결하기 위해 정렬과 양 끝의 포인터를 활용하는 접근법에 대해 알아보겠습니다.2. 접근 방법문제를 효율적으로 해결하기 위해 다음과 같은 로직을 설계했습니다.정렬하기능력치 리스트를 오름차순으로 정렬하여, 가장 작은 값과 큰 값을 쌍으로 묶으면 팀 능력치의 최대값을 최소화할 수 있습니다.양끝 더해서 최솟값 계산각 팀의 능력치를 구하기 위해 정렬된 리스트의 양 끝 값을 더합니다.최솟값 비교 반복가능한 모든 팀 조합의 능력치 중 최대값의 최솟값을 구합니다. 이를 위해 NN번 반복하며 최솟값을 업데이트합니다.3. 구현 코드.. 알고리즘공부(Algorithm Study)/문제풀이(ProblemSolving) 2024. 12. 4. 백준 28353번: 고양이 카페 문제 풀이 1. 문제 개요백준 28353번, 고양이 카페 문제는 제한된 **최대 무게(K)**를 초과하지 않도록 고양이들의 무게를 조합하여 가능한 한 많은 쌍을 만들라는 문제입니다. 이를 효율적으로 해결하기 위해 정렬과 투포인터를 활용하는 방법에 대해 알아보겠습니다.2. 접근 방법문제를 효율적으로 풀기 위해 다음과 같은 방법을 사용했습니다.무게 정렬: 무게를 오름차순으로 정렬하여 작은 값과 큰 값을 비교하기 쉽게 만듭니다.투포인터 활용:양 끝의 포인터 l과 r을 설정합니다.두 포인터의 합이 최대 무게 K 이하이면 쌍을 만들 수 있으므로 둘 다 포인터를 좁힙니다.합이 K보다 크면, 오른쪽 포인터(r)를 줄여서 더 작은 값을 탐색합니다.종료 조건:두 포인터가 교차하면 반복을 종료합니다.3. 구현 코드# 입력 받기N, .. 알고리즘공부(Algorithm Study)/문제풀이(ProblemSolving) 2024. 12. 4. 추상 메서드와 추상 클래스란? 추상 메서드와 추상 클래스란?추상 메서드와 추상 클래스는 객체지향 프로그래밍에서 중요한 개념으로, 구체적인 구현 없이 설계만 정의하는 데 사용됩니다. 이는 주로 공통적인 인터페이스나 동작을 여러 하위 클래스가 공유하게 하고 싶을 때 사용됩니다.1. 추상 클래스(Abstract Class)란?추상 클래스는 인스턴스화(객체를 만드는 것)가 불가능한 클래스입니다. 이 클래스는 주로 다른 클래스들이 상속받아 구현해야 할 공통적인 인터페이스나 메서드를 정의하는 용도로 사용됩니다. 추상 클래스 자체는 완전한 클래스가 아니기 때문에, 직접 객체를 생성할 수 없고 반드시 상속을 통해서 사용해야 합니다.파이썬에서는 abc 모듈의 ABC 클래스를 사용하여 추상 클래스를 정의할 수 있습니다.2. 추상 메서드(Abstract.. 프로그래밍공부(Programming Study)/파이썬(Python) 2024. 9. 8. 파이썬에서 상속과 확장, 인터페이스에 대한 자세한 설명 1. 상속(Inheritance)이란?상속은 객체지향 프로그래밍의 중요한 개념 중 하나로, 하나의 클래스가 다른 클래스를 기반으로 하여 그 속성과 메서드를 물려받는 것을 의미합니다. 상속을 통해 기존 클래스의 기능을 재사용하거나 확장할 수 있으며, 코드를 더 효율적이고 관리하기 쉽게 만듭니다.예시:# 부모 클래스class Animal: def __init__(self, name): self.name = name def speak(self): print(f"{self.name} makes a sound.")# 자식 클래스class Dog(Animal): def speak(self): print(f"{self.name} barks.")# 'Animal' .. 프로그래밍공부(Programming Study)/파이썬(Python) 2024. 9. 8. 무한히 큰 수 두 개의 사칙연산 처리 방법과 파이썬 예제 무한히 큰 수를 다루는 것은 암호화, 금융 계산, 과학적 시뮬레이션 등 여러 분야에서 중요한 역할을 합니다. 하지만 단순히 큰 수의 사칙연산을 처리하는 것뿐만 아니라, 이러한 연산을 효율적으로 수행하는 알고리즘과 방법이 필요합니다. 이 글에서는 무한히 큰 수를 다루는 방법과 효율적인 사칙연산 알고리즘을 소개하고, 파이썬 예제 코드도 함께 살펴보겠습니다.1. 무한히 큰 수의 개념무한히 큰 수는 컴퓨터의 기본 데이터 타입으로 표현할 수 없는 크기의 숫자를 의미합니다. 컴퓨터에서는 메모리와 시간 복잡도 제한 때문에 무한히 큰 수를 다루기 위해서는 특별한 방법이 필요합니다. 특히, 단순한 연산 이상의 복잡한 알고리즘이 필요할 때가 많습니다.2. 무한히 큰 수의 사칙연산 처리무한히 큰 수의 사칙연산은 기본적인 덧.. 알고리즘공부(Algorithm Study)/알고리즘이론(AlgorithmTheory) 2024. 8. 13. [순열 사이클 분할] 백준 10451 순열 사이클 이번 포스트에서는 백준 10451번 문제인 "순열 사이클"을 파이썬으로 풀이한 방법을 공유하고자 합니다. 이 문제는 주어진 순열 내에서 사이클이 몇 개 존재하는지를 찾는 문제로, DFS(깊이 우선 탐색)를 활용하여 해결할 수 있습니다.순열 사이클 분할 설명순열 사이클 분할은 주어진 순열을 사이클 구조로 분해하는 과정입니다. 순열은 각 요소가 다른 요소로 매핑되는 일종의 함수입니다. 이때, 순환 구조(사이클)를 찾는다는 것은 해당 순열 내에서 자기 자신으로 돌아오는 경로를 찾는 것을 의미합니다.예를 들어, 순열이 다음과 같이 주어졌다고 가정합니다:( \text{순열} = [2, 3, 1, 5, 6, 4] )이 순열에서 사이클을 찾아보면:1 → 2 → 3 → 1 (사이클 형성)4 → 5 → 6 → 4 (사이.. 알고리즘공부(Algorithm Study)/문제풀이(ProblemSolving) 2024. 8. 10. [다익스트라] 백준 1753 최단경로 이번 포스팅에서는 백준 1753번 문제를 다익스트라 알고리즘을 활용하여 풀이하는 방법을 다뤄보겠습니다. 이 문제는 특정 시작점에서 다른 모든 정점으로 가는 최단 경로를 찾는 문제로, 그래프 이론에서 자주 등장하는 문제 유형입니다.문제 설명주어진 그래프에서 시작점으로부터 다른 모든 정점으로의 최단 경로를 구하는 문제입니다. 그래프는 방향성이 있으며, 간선마다 가중치가 부여되어 있습니다. 다익스트라 알고리즘은 이와 같은 가중 그래프에서의 최단 경로 문제를 효율적으로 해결할 수 있는 알고리즘입니다.다익스트라 알고리즘 개요다익스트라 알고리즘은 그래프 이론에서 가장 널리 사용되는 최단 경로 탐색 알고리즘 중 하나입니다. 이 알고리즘은 가중치가 있는 그래프에서, 하나의 시작 정점으로부터 다른 모든 정점으로 가는 최.. 알고리즘공부(Algorithm Study)/문제풀이(ProblemSolving) 2024. 8. 10. [등차수열] 백준 2108 수들의 합 이번 포스팅에서는 백준 2108번 문제를 효율적으로 풀이하는 방법을 다뤄보겠습니다. 이 문제는 특정 수 ( N )을 등차수열로 나타낼 수 있는 모든 경우의 수를 구하는 문제입니다. 특히 이 문제는 자기 자신을 포함한 수열을 고려하는 것을 요구합니다.문제 분석주어진 숫자 ( N )을 자기 자신도 포함하여 하나 이상의 자연수로 이루어진 등차수열로 나타낼 수 있는 모든 경우의 수를 찾는 것이 목표입니다. 수열의 길이가 1 이상인 등차수열을 찾는 과정에서 우리는 ( N )의 약수와 관련된 규칙을 활용할 수 있습니다.핵심 개념등차수열이란?: 등차수열은 연속된 수들의 합입니다. 예를 들어, 1, 2, 3, 4, 5는 모두 연속된 수들이므로, 그 합은 15입니다. 이 문제에서는 어떤 수 ( N )을 연속된 자연수들의.. 알고리즘공부(Algorithm Study)/문제풀이(ProblemSolving) 2024. 8. 10. 파이썬 nonlocal 키워드 완벽 이해: 중첩 함수에서 변수 관리하기 파이썬을 사용하다 보면 중첩 함수(내부 함수)를 사용하게 되는 경우가 많습니다. 중첩 함수에서는 외부 함수의 변수에 접근하거나 이를 수정해야 하는 상황이 종종 발생하는데, 이때 사용하는 것이 바로 nonlocal 키워드입니다. 이 글에서는 nonlocal의 개념과 사용법을 자세히 설명하고, 이를 통해 변수 관리와 클로저 구현에 어떻게 활용할 수 있는지 알아보겠습니다.1. nonlocal 키워드란 무엇인가?nonlocal의 개념과 필요성nonlocal은 파이썬에서 함수 내에서 변수를 선언할 때 사용하는 키워드로, 중첩된 함수 내에서 바깥 함수에 선언된 변수를 참조하고 수정할 수 있도록 해줍니다. 만약 nonlocal 키워드를 사용하지 않으면, 중첩된 함수 내에서 변수를 할당할 때 새로운 지역 변수가 생성됩.. 프로그래밍공부(Programming Study)/파이썬(Python) 2024. 8. 9. 파이썬 클로저로 이해하는 데이터 은닉, 팩토리 함수, 데코레이터 패턴 클로저를 활용한 데이터 은닉, 팩토리 함수, 데코레이터클로저는 파이썬의 고급 프로그래밍 기법 중 하나로, 이를 통해 데이터 은닉, 팩토리 함수, 데코레이터와 같은 유용한 패턴을 구현할 수 있습니다. 각각의 개념을 클로저와 함께 어떻게 사용하는지 알아보겠습니다.데이터 은닉 (Data Encapsulation)데이터 은닉은 객체지향 프로그래밍에서 중요한 개념으로, 특정 데이터나 변수에 대한 접근을 제한하여 외부에서 직접적으로 변경하지 못하게 하는 방법입니다. 클로저를 사용하면 함수 내부에서만 접근 가능한 변수를 만들 수 있으며, 이를 통해 데이터 은닉을 구현할 수 있습니다.예를 들어,def make_counter(): count = 0 # 외부에서 접근할 수 없는 변수 def counter():.. 프로그래밍공부(Programming Study)/파이썬(Python) 2024. 8. 9. 이전 1 2 다음 728x90