[백준, 파이썬, 5585번] 거스름돈 풀이1000엔에서 입력으로 주어지는 값을 뺀 잔돈을주어진 500,100,50,10,5,1 로 계속 나누며 거슬러줄 잔돈 개수를 세는 문제로간단히 divmod를 활용하여 몫과 나머지를 a와n으로 다시 받아result에 a를 누적합 하여 해결 n = 1000-int(input())result = 0for i in [500,100,50,10,5,1]: a,n = divmod(n,i) result += aprint(result) 알고리즘 2024.05.03
[백준, 파이썬, 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
[백준, 파이썬, 10867번] 중복 빼고 정렬하기 풀이 파이썬은 간단하게 중복을 제거해주는 set이 있기에 입력 값을 넣어준 다음 배열로 만들어 정렬하여 간단히 해결. import sys input = sys.stdin.readline n = int(input()) print(*sorted(list(set(map(int,input().split()))))) 알고리즘 2024.04.23
[자바스크립트] 마우스 이동에 따른 이미지 움직임 & 글레어 효과 해당 코드는 유튜브의 코딩애플님의 영상을 보며 적용했습니다. 구현 과정 우선 css요소는 하나씩 적용하며 변경하면 더욱 재미있는 효과가 나올 것 같으며 가장 중요했던 것으로는 이벤트 요소로 mousemove에 따른 것으로 해당 이벤트가 적용될 때마다 전달해져 오는 파라미터값인 e의 offset값으로 x,y 좌표값을 가져올 수 있었다. 여기서 offset은 특정 값으로부터의 위치로 예를 들어 문자열 "abcdef"가 있다면 c는 a위치에서 offset 2가 된다. 그리고 마우스 움직임에 따른 회전을 적용하기 위해서 rotate를 적용할 때 해당 영상에 있는 효과처럼 Y축으로 적용할 때는 x 위치에 따라 -20deg ~ 20deg를 적용하기 위해서 x*a+b = -20deg ~ 20deg 로 적용해서 카드 .. 실용적인 알고리즘 2024.04.17
[파이썬] 파이썬 코드를 실행 파일로 만들기 방법 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.. 실용적인 알고리즘 2024.04.17
[FM2024, 파이썬] Facegen 공통 사진 복사 및 이름 변경 구현 의도 근래에 기초적인 알고리즘으로 기초를 다지면서 지내다보니 포스팅에 대해 신경쓰고 있지 않았으며 또 FM2024를 하다가 계속 찰흑 덩어리 애들이 보이면 사진을 구해서 포토샵으로 누끼 딴걸 인게임 내에서 사용중인 스킨으로 해당 캐릭터의 고유 ID로 파일 이름 변경 후 Facegen 프로그램을 실행과정을 거쳐서 해결했는데 몇 개인지도 모르는 고유 캐릭터를 하나씩 변경하기 힘들고 귀찮아서 우선 자주 보이는 2002061000부터 2002079999 까지 모두 같은 사진으로 복사 파일을 이름만 변경해서 생성하기 위해 파이썬을 활용한 실용적인 알고리즘을 작성 구현 과정 우선 파이썬 외장 함수인 shutil을 사용 shutil이란 shell utilities의 줄인 말로 파일 및 디렉토리 작업을 수행하는 .. 실용적인 알고리즘 2024.04.17
[파이썬] numpy 알고리즘 문제를 풀다가 1차원 배열을 n길이의 2차원 배열로 만드는 문제가 있어 이전에 학습한 numpy를 활용한 reshape()을 사용해서 해결했는데 여기서 다른 해결 코드를 확인하다가 reshape() 인자값으로 -1을 넣은 것을 확인하여 어떤 의미인지 확인하다가 다른 메서드들에 대해 관심을 가지게 되어 다시 포스팅하기로 생각함... ㅎㅎ 우선 reshape()의 인자값으로 -1을 넣는 건 자동으로 해당 크기에 맞게 맞춰줄 때 사용하는 것으로 예를 들어 크기가 12인 배열을 2행 6열로 할당하고자 할 경우 n이 2로 입력이 주어진다면 간단하게 아래와 같이 작성하면 됨. 여기서 tolist()를 하는 이유는 tolist()를 사용하기 이전에는 Numpy 배열이기에 배열로 출력하고자 한다면 tolist.. 알고리즘 2024.04.05
벡터 vector numpy를 사용하다가 단위 벡터, 선형 독립이라는 용어와 수학적인 것이 나오길래 궁금하기도 하고, 근래에 자바스크립트로 나왔던 알고리즘 문제로 레이더 관련해서도 수학적인 것이 종종 나오는 것 같아서 궁금한 수학 관련 용어나 이론이 있다면 공부하고 싶어서 포스팅하기로 함. 아! 그리고 오늘 알고리즘 문제로 나왔던 n개의 공이 있는 곳에서 순서 없이 m개를 선택하는 방법에 대한 개수를 구하는 문제로 조합을 활용하는 건데 전에 포스팅한 것처럼 itertools나 math, 재귀, 반복문 등으로 해결 가능하지만 간단한 이론으로 해결하는 방법은 아래와 같고 n! ---------- (n-m)!*m! 순열 또한 아래와 같이 간단하게 수학적으로 접근하면 된다. n! ---------- (n-m)! 이제 벡터에 대해.. 알고리즘 2024.04.04