파이썬 160

[프로그래머스] 코딩 기초 트레이닝 (각 문제 별 답) -1

문자열의 앞의 n글자def solution(my_string, n): return my_string[:n]접미사인지 확인하기def solution(my_string, is_suffix): return 1 if is_suffix in {my_string[i:] for i in range(len(my_string))} else 0문자열의 뒤의 n글자def solution(my_string, n): return my_string[len(my_string)-n:]글자 이어 붙여 문자열 만들기def solution(my_string, index_list): return "".join([my_string[i] for i in index_list])카운트 업def solution(start_nu..

알고리즘 2024.06.18

[백준, 파이썬, 2890번] 카약

풀이문제를 해결하면서 좀 비효율적인데 이게 맞는것 같아서 그냥 적용해서 해결우선 입력 값이 많이 있기에 import sys로 input 을 재정의 하고이후 현재 카약의 위치를 찾아서 해당 카약 번호에 맞는 li의 인덱스에 넣어주기이후 결과인 result 배열에 2중 for문으로비교 대상 카약인 i와 비교할 대상 카약인 j를 비교하는데 i와 j 즉 같은 카약이 아니며 비교할 대상 카약이 더 목표 지점에 가깝고 같은 거리 위치의 카약과 비교한 적이 없는 경우에만카운팅과 s에 넣어 연산하여 해결  import sysinput = sys.stdin.readliner,c = map(int,input().split())li = [0]*(9)for _ in range(r): kayak = input().stri..

알고리즘 2024.05.28

[백준, 파이썬, 2485번] 가로수

풀이주석에 작성한 것처럼 li에는 가로수 위치result에는 가로수 사이의 거리 차이를 넣어주기이후 최대공약수(GCD)를 찾아 해결하는 것을 생각해서처음엔 result를 정렬 후 가장 작은 값과 큰 값의 GCD만을 찾아 적용해봤는데에러가 발생해서 뭔가 설마 모든 경우에 대한 GCD를 찾아야 하는지 고민 후 적용해보니 정답이 나왔다. 처음엔 왜 가장 작은 값과 큰 값의 GCD만 적용하려 했냐면어쨋든 가장 작은 값과 큰 값의 GCD로면 해결이 될 거라고 생각했기에 적용했고, 아직도 반례를 찾지 못해잘은 모르지만 적당히 해결은 했지만... 조금 찝찝하긴하다. import sysinput = sys.stdin.readlinen = int(input())li = [int(input()) for _ in range..

알고리즘 2024.05.27

[백준, 파이썬, 5014번] 스타트링크

풀이dfs, bfs 문제집에 있는 문제로해당 알고리즘을 활용해야 한다는 것을 알고 있었기에 간단히 해결할 수 있었는데만약 모르는 상황이었다면 좀 걸렸을 것 같다.우선 현재인 s 층에서 u,d 버튼을 눌렀을 때 지정 범위 내에 있다면모두 이동할 수 있게 하는데 여기서 무한 순회하지 않도록 방문 표시를 하여 해결할 수 있도록 했으며bfs는 탐색하기 전에 모든 경우에 대해 추가 후 탐색을 하는 것이기에q에 추가하기 전에 먼저 방문 표시를 하여 해결하도록 했으며bfs는 모든 경우를 하나씩 확인하는 것이기에가장 먼저 결과에 다다른 것이 가장 빠른 방법이기 때문에while문을 바로 탈출하도록 하여 해결. import sysfrom collections import deque# dfs 활용f,s,g,u,d = map..

알고리즘 2024.05.02

[백준, 파이썬, 2644번] 촌수계산

풀이처음 접근한 방식은 단순히 자식에서 부모를 찾으면 된다는 것 하나로간단하게 접근하여 제시된 예제는 모두 통과 했지만 계속해서 12%에서 틀렸다고 나오기에 어떤 이유인지 조사했을 때 발견한 것으로첫 번째는 조사해야하는 a,b가 있을 때 a가 b의 부모이던지, 그 반대의 경우에 대한 조건을 찾을 수 있었으며두 번째로는 사실 계속 고민했을 때 찾지 못해 다른 게시글로 알게 된 정말 간단한 것으로더 높은 숫자가 부모가 되는 조건으로어떤 방식으로 해결해야 좋을지 고민한 결과그냥 단순히 부모에 연결된 자식 li를 하나씩 탐색하는 방법을 택하였으며여기에 bfs를 적용하여 각 노드에서 하나씩 모두 탐색하여a와b 모두 연결된 것 중, 가장 적은 촌수를 가진 값을 도출하여 해결할 수 있도록 함. import sysfr..

알고리즘 2024.05.01

[백준, 파이썬, 1406번] 에디터

풀이 처음 접근한 방식은 그래도 최대한 계산을 덜하도록 하기 위해 인덱스와 길이를 계산하면서 조건 분기후 처리하려 했지만 역시나 시간초과가 발생하여 아래에 있던 힌트에 스택을 활용하여 해결 좌우에 각각의 배열을 만들어 해결했는데 우선 초기 문자열을 좌측 l 배열에 넣고 L문자가 주어지면 l배열의 가장 마지막 값을 r배열 가장 왼쪽에 추가하고 D는 l배열 가장 마지막 문자를 지우는 형식으로 B와 P 또한 각 조건 분기에 맞게 처리하여 마지막엔 각각의 배열을 합쳐 출력하여 해결 여기서 deque는 간단하게 배열 좌우에서 추가 제거가 가능하도록 하기 위해 사용 첫 번째 풀이가 정답 코드이며, 두 번째 풀이가 시간 초과 코드 첫 번째 풀이(정답) import sys from collections import d..

알고리즘 2024.04.23

[파이썬] 파이썬 코드를 실행 파일로 만들기

방법 Pylanstaller 사용 아래 코드를 실행하게 되면 dist 폴더 안에 실행 파일 이름으로 폴더가 생기는데 해당 폴더 안에 파일이 생성되어 있음. # terminal pip install pyinstaller # 설치 pyinstaller python_file.py # 작성한 파이썬 파일 변환 cx_Freeze 사용 # terminal pip install cx_Freeze # 설치 cxfreeze python_file.py --target-dir dist # 작성한 파이썬 파일 변환 여기서 위 코드를 설치하기 좀 그렇다면 가상환경에서 설치하는 것도 좋기에 아래에 작성하겠습니다. # terminal python -m venv venv # 가상환경 venv 설치 venv/Scripts/activa..