코딩테스트 140

BOJ #1463 1로 만들기 python

💡Github URL: https://github.com/hansun-hub/2025-algorithm-study/commit/1aef87558d40c1006e0089aa4c3a32d0df9003a1 feat: BOJ 1463번 1로 만들기 · hansun-hub/2025-algorithm-study@1aef875hansun-hub committed Feb 25, 2025github.com 💡문제에서 구해야 할 것문제 조건 :정수x 가 주어졌을 때 3으로 나누는 경우, 2로 나누는 경우, 1을 빼는 경우 이 세가지 연산을 이용하여 1을 만드려고 할 때 정수 x가 1이 되는 연산 횟수의 최솟값 구하기 💡알고리즘 설계dp 리스트 생성 (n+1) 크기로dp[ i ] 에는 i 를 1로 만드는 최소 연산 횟..

BOJ #12851 숨바꼭질2 python

💡Github URL: https://github.com/hansun-hub/2025-algorithm-study/commit/c9c77d50c6cb976bb6f6be6f6ede7f2ae4756c84 💡문제에서 구해야 할 것문제 조건 :수빈이와 동생의 위치가 주어짐수빈이가 동생을 찾는 가장 빠른 시간과, 가장 빠른 시간으로 동생을 찾는 방법의 수를 출력한다 💡알고리즘 설계출력할 시간(time)과 방법의 수(ways)를 기록할 배열을 생성지금 수빈이가 있는 위치를 큐에 넣고 while 반목문을 큐에 값이 있을 동안으로 설정있는 위치에서 x-1, x+1, 2*x 한 위치를 구해 처음 방문하거나 더 적은 시간이 걸리는 경우 방법을 1 추가하고 while 반복문 계속 반복 💡코드from collectio..

BOJ #2667 단지번호붙이기 python

💡Github URL: https://github.com/hansun-hub/2025-algorithm-study/blob/main/3주차/BOJ 2667.py  💡문제에서 구해야 할 것문제 조건 :정사각형 지도에서 1이 모여 있는 곳은 단지, 단지의 갯수와 그 단지의 크기를 구해라 💡알고리즘 설계complex : 연결된 집들의 그룹 크기 저장 하는 리스트 생성지도를 돌며 1인 곳이면 bfs 함수 부르기bfs 함수 내 _ 덱을 이용/ 지도에서 1이었던 부분을 0으로 바꿔서 방문처리count 셈 → 나중에 크기 계산 위해while 반복문 : 상하 좌우 이동 방향을 이용해서 현재 bfs에 들어온 위치 기준으로 살펴보고 그 값이 1이면 큐에 넣어주고 count 증가돌아와서 complex[] 리스트 정렬 ..

BOJ #11724 연결 요소의 개수 python

💡Github URL: https://github.com/hansun-hub/2025-algorithm-study/commit/0e43715eace53a51249237a7052e3656ecddc46a 💡문제에서 구해야 할 것문제 조건 :중점의 개수, 간선의 개수가 주어지고 양끝점 주어짐, 이에 연결 요소의 개수 출력연결 요소 (Connected Component) : 하나의 덩어리(= 집합)처럼 서로 이어진 정점들의 그룹 💡알고리즘 설계graph로 양 끝점 입력 받고 visited로 방문했는지 여부 확인bfs 함수 : 덱으로 큐 구현, ( popleft() 가 가장 용이 _ list 보다 빠름)graph에서 연결된 노드들 방문하면 True로 , 큐에 그 연결된 노드 추가반복하며 노드들이 모두 방문했..

BOJ #14888 연산자 끼워넣기 python

💡Github URL: https://github.com/hansun-hub/2025-algorithm-study/commit/cfb990953606b9ec977e81009aab9f8327169db8 💡문제에서 구해야 할 것문제 조건 :N개의 수열이 있고 연산자가 주어지는데 만들 수 있는 결과가 최대인 것과 최소인 것을 구해라 💡알고리즘 설계연산자 리스트를 만들고 그 리스트의 순열(permutation)을 구하여 가능한 모든 연산자 배열 만듬calculate 함수에서 값을 계산함 _ 특히 나눗셈 계산시 음수 나눗셈, 양수 나눗셈 분기해서 구현해줌 💡코드from itertools import permutations# 수식 계산 함수def calculate(numbers, operators): ..

BOJ #14889 스타트와 링크 python

💡Github URL: https://github.com/hansun-hub/2025-algorithm-study/blob/main/2주차/BOJ 14889.py 💡문제에서 구해야 할 것문제 조건 :N명을 두개의 팀으로 나누는 모든 경우 탐색 후 두 팀의 능력치 최소값 찾아라 💡알고리즘 설계백트래킹 이용해서 N/2 되는 경우 팀 구성능력치 계산 _ S[i][j] + S[j][i]최솟값 갱신 시켜줌 💡코드import sysdef calculate_score(team, S): """ 주어진 팀의 능력치 합을 계산하는 함수 """ score = 0 for i in range(len(team)): for j in range(i + 1, len(team)): ..

BOJ #14501 퇴사 python

💡Github URL: https://github.com/hansun-hub/2025-algorithm-study/commit/c8d2a247558a50f2e89e5d4ca6ebc7800c898082 💡문제에서 구해야 할 것문제 조건 :시간과 pay가 주어지면 퇴사 전까지 최대의 돈을 벌기 위해 받을 수 있는 상담을 고려해 최대 pay의 합을 구하라 💡알고리즘 설계스케쥴을 입력받고 dp[0] 테이블 N+2 크기로 생성뒤에서부터 dp 값 갱신하며 상담이 가능한 날, 불가능한 날 if, else 구문으로 분기 💡코드def max_profit(N, schedule): dp = [0] * (N + 2) # N+1까지 필요하므로 N+2 크기 할당 # 뒤에서부터 dp 갱신 for day i..

BOJ #20546 기적의 매매법 python

💡Github URL: https://github.com/hansun-hub/2025-algorithm-study/commit/c93d0e6cdc999e8b10a4a98cadd82a2e957fbad7 💡문제에서 구해야 할 것문제 조건 :준현이와 성민이에게 동일한 현금이 주어지고 각자 다른 방식으로 매도/매수 한 후의 자산을 비교해야함 💡알고리즘 설계BNP def 와 TIMING def를 생성BNP def는 최대한 매수하는 함수TIMING def는 3회 연속 상한 → 매도 / 3회 연속 하한 → 매수(주의할 점은 3회 내려가고 또 내려가면 또 매수함 / TIMING은 매도도 있음 ) 💡코드def BNP(money, prices): stocks = 0 # 보유 주식 수 for price ..

BOJ #1547 공 python

💡Github URL: https://github.com/hansun-hub/2025-algorithm-study/blob/main/2주차/BOJ 1547.py💡문제에서 구해야 할 것문제 조건 :공은 그대로, 컵을 바꿀것_ 최종으로 공이 들어가 있는 컵의 번호 💡알고리즘 설계컵을 리스트로 구현_ 1의 값이 공, 나머지 컵들은 0의 값을 가짐temp 를 사용해서 x, y 의 값을 바꿈1의 값을 가진 리스트의 인덱스를 반환 💡코드cup= [0]*3cup[0]=1def bounce(x,y): temp=cup[x-1] cup[x - 1] = cup[y-1] cup[y-1] = tempm = int(input())for _ in range(m): x,y = map(int,input()..

BOJ #1018 체스판 다시 칠하기 python

유형 : 브루트포스 풀이날짜 : 2025년 2월 7일 풀이방법 한 줄 요약 : w일때 b일때 이 두 가지 경우의 이상적인 체스판과 비교 후 그 숫자중 최소값 구하기 💡Github URL: https://github.com/hansun-hub/2025-algorithm-study/blob/main/1주차/BOJ 1018.py 💡문제에서 구해야 할 것문제 조건 :특정 8*8 영역을 체스판으로 만들기위해 다시 칠해야하는 개수를 구하기 💡알고리즘 설계함수 1 : 8*8 범위를 순회하며 기대되는 색 계산(i+j) % 2 == 1: first_color 반대 색실제 보드 색과 다르면 count 증가(i+j) % 2 == 0: first_color 유지함수 2 : 보드에서 가능한 모든 8*8 영역을 확인하고, ..