파이썬 8

프로그래머스 신규 아이디 추천

📝 TIL - 프로그래머스 신규 아이디 추천 📌 문제 요약 사용자로부터 입력된 아이디가 조건에 맞지 않을 경우, 주어진 규칙에 따라 새로운 아이디를 추천하는 문제입니다. 📚 학습 내용 정규표현식을 활용한 문자열 정제 조건문과 슬라이스를 활용한 문자열 길이 조정 문자열의 시작/끝에서 특정 문자 제거 (마침표) 로직을 함수로 분리하여 재사용성 및 가독성 향상 🔧 주요 로직 요약 모든 대문자를 소문자로 변환 허용되지 않은 문자 제거 연속된 마침표는 하나로 축약 시작/끝에 위치한 마침표 제거 빈 문자열이면 "a"로 대체 길이가 16자 이상이면 자르고, 끝이 마침표면 제거 길이가 2자 이하이면 마지막 문자를 반복하여 길..

Python/algorithm 2025.04.21

측정할 수 없는 최소 무게

오늘은 그리디(Greedy) 알고리즘의 핵심 개념을 활용하는 문제인 백준 2437번: 저울을 풀어보았다. 🧩 문제 요약 여러 개의 저울추가 주어진다. 이 추들을 이용해 측정할 수 없는 가장 작은 양의 정수 무게를 구하는 문제다. 예: [3, 1, 6, 2, 7, 30, 1] → 정답: 21 🔍 핵심 아이디어 추들을 오름차순 정렬한 후, 지금까지 만들 수 있는 최대 누적합을 `target`이라 한다. 매번 다음 추의 무게 `w`를 확인하며, w > target일 경우, 그 순간 target이 측정할 수 없는 최소 무게가 된다. 🤔 왜 그렇게 되는가? 예를 들어, 현재까지 1 ~ 20까지는 만들 수 있었다고 하자. 그런..

Python/algorithm 2025.04.10

한국이 그리울 땐 서버에 접속하지

이번 문제는 간단한 정규식 패턴 매칭 문제였습니다. 한국이 그리울 땐 서버에 접속하지[9996] 📋 문제 설명 첫째 줄에 파일의 개수 N이 주어진다. (1 ≤ N ≤ 100) 둘째 줄에는 패턴이 주어진다. 패턴은 알파벳 소문자와 별표(*) 한 개로 이루어져 있으며, 별표는 문자열의 시작과 끝에 있지 않다. 다음 N개의 줄에는 각 파일 이름이 주어지고, 패턴과 일치하는지 판별해야 한다. 별표(*)는 임의의 문자열(길이 0 이상)을 의미하며, 정규식의 .*와 동일하다. 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고: "DA"는 YES, "NE"는 NO를 의미한다. 🧪 입..

Python/algorithm 2025.04.09

쇠막대기 자르기

📌 백준 10799번 - 쇠막대기 (스택)문제는 다음과 같음 👇- "(" 막대의 시작을 STACK 에 저장하고,- ")" 를 만날때 레이저이기 때문에 레이저 구성인 '(' 를 스택에서 제거한 뒤- 나머지 스택의 길이를 z(조각)에 저장합니다. (레이저를 만나서 잘린 조각)- 이후 ")"의 전 괄호가 ')' 일 경우에는 하나의 막대가 끝난것이기 때문에 +1을 해줍니다 (끝난 막대의 마지막 잘린 조각 더해줌)코드n = "()(((()())(())()))(())"bar_stack = []z = 0for i, _ in enumerate(n): if n[i] == "(": bar_stack.append(n[i]) else: if n[i-1] == "(": ..

Python/algorithm 2025.04.08

DFS - 백준 2468번 :안전영역

오늘도 역시 굉장히 어려운 문제였어용.... 문제 : 백준 2468번: 안전영역해당 문제는 그래프 탐색 문제였고, DFS / BFS 의 개념이 필요했습니다.문제를 정확히 풀기 위해 먼저 그래프 탐색의 개념을 정리해보았습니다.📌 그래프(Graph)란?정점(Node)과 정점을 연결하는 간선(Edge)으로 구성된 자료구조입니다.그래프 탐색은 하나의 정점에서 시작해 모든 정점을 탐색하는 것입니다. DFS (Depth-First Search)깊이 우선 탐색 하나의 경로를 최대 깊이까지 계속 들어가며 탐색하고,더 이상 갈 곳이 없으면 이전 경로로 백트래킹(되돌아감)스택 또는 재귀 함수로 구현 가능BFS ( Breadth-Frist Search)너비 우선 탐색현재 위치에서 갈 수 있는 모든 노드를 먼저 탐색하고..

Python/algorithm 2025.04.03

__contains__

파이썬에서 요런 범위를 판단하는 코드를 작성해본적이 있을거에용.a = 10b = 20c = 15if a   이 코드를 좀더 Pythonic 하게 작성하는 방법에 대해 알아봐요. 먼저 파이썬은 객체 지향 언어입니다.여기서 우리는 판단할 범위를 클래스로 만들어 줄거에용class MyRange: def __init__(self, min, max): self.min = min self.max = maxma_range = MyRange(10,15)print(ma_range.min) # 10print(ma_range.max) # 15 자 ! 마레인지가 완성되었습니다.! min과 max가 잘 출력 되고있습니다.그러면 우리가 원하는 범위내에 포함되는 판단을 할수 있을까용?print( 1 ..

Python/core 2025.01.25

Django - ManyToManyField.through_fields

Django 에서 ManyToManyField를 사용하다 보면 중간 테이블이 자동으로 만들어 지는 것이 아닌 내가 원하는 정보를 넣어서 중간 테이블을 커스텀 하려고 하는 경우가 발생한다. (필자의 경우 오늘 그랬다.) 나의 경우에는 유저와 게시물로 Like를 다대다관계로 만들었고 그 중에서 Like 발생 날짜를 테이블에 넣어주고자 했다. from django.db import models class User(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.name class Post(models.Model): title = models.CharField(max_length=100) desc = mod..

Python/Django 2022.09.15