전체 글 177

[Python][백준] 1446. 지름길

링크🔗https://www.acmicpc.net/problem/1446🗒️파이썬 코드 풀이N,D = map(int,input().split(' '))lst = [list(map(int,input().split(' '))) for _ in range(N)]lst = sorted(lst)dp = [i for i in range(D+1)]k = 0for i in range(len(dp)): dp[i] = min(dp[i-1]+1,dp[i]) while k 1. DP로 푸는 문제이다.  2. 0~D(고속도로 길이)까지 dp 리스트를 만들어준다. 3. 0~D까지의 반복문을 돌리면서 현재 dp[i] 와, 이전 dp[i-1] + 1 의 dp 값 중 최소 값을 dp[i]로 한다.(이렇게 하는 이유는 지름..

[Python][백준] 1927. 문자열 교환

링크🔗https://www.acmicpc.net/problem/1522🗒️파이썬 코드 풀이lst = list(input())a_cnt = lst.count("a")circle_lst = lst + lstmn = 10000for i in range(len(lst)): tmp_lst = circle_lst[i : i + a_cnt] mn = min(mn, tmp_lst.count("b"))print(mn) 1. 브루트포스로 하나 하나 다 확인을 하는데, 슬라이딩 윈도우 방식을 쓰면 편하다.  2. 문제의 문자열은 원형의 특성을 가지고 있기 때문에, lst + lst로 하여 연결시켰다.(브루트포스로 확인 할 때는 기존 lst에 있는 것만 확인하면 된다.) 3. 교환을 하더라도 a의 개수는 정해저..

RDBMS NoSQL MongoDB

🌟시작하기에 앞서나보고 RDBMS와  NoSQL를 설명해보라고 하면, RDBMS는 잘 정리된 DB,  NoSQL는 마구잡이 DB라고 할 것 같다. 이번에 따로 프로그래밍 공부를 하는데, 거기에서 MongoDB가 나왔다.그래서 MongoDB 는 RDBMS와  NoSQL 중 어떤 것인지 알고, RDBMS와  NoSQL에 대해 좀 더 명확히 개념화를 해보려 한다.  포스팅 구성은 아래와 같다.1. DB 종류 ( RDBMS와  NoSQL)2. 특징 및 사용 사례3. MongoDB 특징  (각 부분에 구체적인 설명도 포함했다.)📚DB의 종류   여기에 RDBMS와  NoSQL의 프레임 워크들이 나오는데, 프로그래밍을 하면 언젠가는 쓸 프레임 워크들이니 보면서 익숙해져보자 ! 📘 RDBMS 데이터를 테이블 형..

SQL 2024.07.08

[Python][백준] 1138.한 줄로 서기

링크🔗https://www.acmicpc.net/problem/1138🗒️파이썬 코드 풀이N = int(input())lst = list(map(int,input().split()))ord = [i for i in range(1,N+1)]result= []for i in range(N-1,-1,-1): result.insert(lst[i],ord[i])# 리스트 값 출력을 위해 str로 변경str_rs = [str(result[i]) for i in range(N)]print(' '.join(str_rs)) 1.  2개의 리스트를 만든다.  ( lst는 입력을 저장한 리스트, ord는 1~N까지의 리스트 ) 2. 입력받은 값들을 기준으로 1~N을 거꾸로 하나 하나 삽입 해주면 된다. 🌟 ins..

[Python][백준] 2075. N번째 큰 수

링크🔗https://www.acmicpc.net/problem/2075🗒️파이썬 코드 풀이import sysimport heapqN = int(input())heap = []for _ in range(N): lst = map(int,sys.stdin.readline().rstrip().split()) for ls in lst: if len(heap)   1.이 문제에서 N^2개의 숫자를 모두 배열에 저장하고 조건에 따라 처리하는 방식은 시간 초과가 된다. 2. 입력된 각각의 줄의 값들을 반복문으로 하나 하나 ls에 넣어주고,  우선순위 큐의 크기를 N개로 제한 한 후 ,  ls가 우선순위 큐의 첫번째 인덱스 보다 큰 값이면, 우선순위 큐의 첫번째 인덱스 지우고 바꿔준다.  3...

[Python][백준] 1927. 최소 힙

링크🔗https://www.acmicpc.net/problem/1927🗒️파이썬 코드 풀이import sysimport heapqT = int(input())heap = []for _ in range(T): n = int(sys.stdin.readline()) if n > 0 : heapq.heappush(heap,n) else: if heap: print(heapq.heappop(heap)) else : print(0) 1. heapq 라이브러리를 import 한다. 2. 입력받은 n이 0보다 크면 heap에 push 하고,0보다 작고 힙의 크기가 0이 아닌 때에는 heappop으로 가장 작은 요소를 제거..

[Python] 가상환경 설치 및 requirements.txt 사용해보기

✨파이썬 가상환경가상환경은 파이썬에서 독립적인 프로젝트를 위한 개별적인 공간  가상환경하면 뭔가 어려워 보인다. 그래서 프로젝트에 잘 안하곤 했는데, 이게 사실은 엄청 간단하고 한번 만들어두면 또 편하니 잘 활용해보자. 📌가상환경 특징1. 독립성 : 가상환경은 특정 프로젝트에 필요한 패키지와 의존성을 독립적으로 설치 및 관리2. 의존성 관리 : 프로젝트 간의 버전으로 인한 충돌 피할 수 있음3. 경량화 : 필요한 패키지와 파이썬 실행 파일만 포함하므로 비교적 가벼움  🔍가상환경 관리 도구 `venv` vs `virtualenv`venv :1. Python 3.3부터 표준 라이브러리에 포함되어 있어 설치 없이 사용 가능2. Python 3.X 버전에서만 사용 가능 3. 필요한 최소한의 기능만 포함하여 ..

Python 2024.07.06

[Python][백준] 19941. 햄버거 분배

링크🔗https://www.acmicpc.net/problem/19941🗒️파이썬 코드 풀이N,K = map(int,input().split())lst = list(input())cnt = 0for i in range(N): if lst[i] == "P": for s in range(i-K,i+K+1): if 0 1. 더 많은 사람들이 햄버거를 먹기위해서, 최대한 왼쪽부터 먹어줘야한다. 2. 우선 lst[i] = "P"일 때의 조건을 세팅해두고 3. s의 범위를 (i-k ~ i+k)로 해두고 4. 0 ≤ N   📌  문제 코멘트범위 설정만 잘하면 어렵지 않은 문제이지만,나는 저 범위 설정을 잘 못해서 시간이 오래 걸렸다 ...내가 풀이했던 방식은 양쪽 큰 순서대..

[Python][백준] 1515. 수 이어 쓰기

링크🔗https://www.acmicpc.net/problem/1515🗒️파이썬 코드 풀이lst = list(input())cnt = 0while lst: cnt += 1 str_cnt = str(cnt) while str_cnt and lst: if lst[0] == str_cnt[0]: lst = lst[1:] str_cnt = str_cnt[1:] print(cnt) 1. 브루드 포스 방식으로 문제 풀이를 진행한다.  (cnt 값을 계속 증가시켜, lst에 있는 숫자와 비교) 2. while을 통해 완전히 lst가 비워질 때 까지, 계속 cnt 값을 증가시킨다.  3. lst와 비교를 위해 cnt를 문자열로 바꿔준다. 4..