알고리즘

알고리즘

[BOJ / Python] 2193 이친수

🔑 문제 https://www.acmicpc.net/problem/2193 🔐 풀이 방법 dp를 이용해서 풀자 ! 🤹 점화식 구하기 1: 1 -> 1가지 방법 2: 10 -> 1가지 방법 3: 100 101 -> 2가지 방법 4: 1010 1001 1000 -> 3가지 방법 5: 1000 10101 10100 10010 10001 -> 5가지 방법 … … … 전 단계의 이친수 개수와 전전단계의 이친수 개수를 합하면 현재 단계의 이친수가 나온다. dp[i] = dp[i - 1] + dp[i - 2] 👑 전체 코드 # https://www.acmicpc.net/problem/2193 # 이친수 import sys input = sys.stdin.readline n = int(input()) dp = [0] ..

알고리즘

[BOJ / Python] 2579 계단 오르기

1️⃣ 문제 설명 https://www.acmicpc.net/problem/2579 2️⃣ 문제 풀이 이 문제는 dp 문제이다. 점화식을 찾아보자 but 계단에 크기가 2개 이하인 경우는 점화식을 이용할 수 없어, 따로 처리해줘야할 것 같다. 3️⃣ 코드 # https://www.acmicpc.net/problem/2579 # 계단 오르기 import sys input = sys.stdin.readline N = int(input()) stairs = [int(input()) for _ in range(N)] dp = [0] * N if N

알고리즘

[프로그래머스 / Python] 등굣길

🧩 문제 설명 🔐 문제 풀이 0️⃣ 좌표 고려해서 문제 풀기 위 사진과 같이 문제에서 좌표를 표현하는 방식과 일반적으로 좌표를 표현하는 방식이 달라 x, y를 뒤집어 문제를 풀어야한다. 1️⃣ 최적의 경로의 수 구하는 방법 현재칸의 최적의 경로의 수는 윗칸과 왼쪽칸의 최적의 경로의 수 합으로 구할 수 있다. 학교의 위치가 (x, y)라고 하면, (x-1, y)의 경로의 수 + (x, y-1)의 경로의 수 합으로 학교까지의 최적의 경로의 수를 구할 수 있다. 🫢 근데 1행과 1열의 경우에는 왼쪽 칸과 위쪽 칸이 존재하지 않는다. 이를 해결하기 위해 [n+1][m+1] 크기의 배열을 만들어 맨 왼쪽 줄과 맨 위쪽 줄의 값을 0으로 두고 사용하지 않을 예정이다.(0으로 두어 결과에 영향을 주지 않게 하자) 2..

알고리즘

[BOJ / Python] 11060번 점프 점프

🧩 문제 설명 input : 배열의 크기, 배열의 값 (점프 가능한 수) output : 몇번 점프해야 맨 오른쪽 칸에 도착할 수 있는지, 도착할 수 없다면 -1 🔐 문제 풀이 ❌ 첫번째 시도 - 틀렸습니다 # https://www.acmicpc.net/problem/11060 # 점프 점프 import sys input = sys.stdin.readline # 입력 N = int(input().strip()) # 배열의 크기 data = list(map(int, input().split())) def jump_jump(): answer = 0 # 점프 횟수 current = 0 # 현재 위치 (인덱스) for _ in range(N): if current >= N - 1: return answer ju..

알고리즘

[프로그래머스 / Python] 달리기 경주

🧩 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/178871 1️⃣ 풀이방법1 - 시간초과 def solution(players, callings): for calling in callings: i = players.index(calling) if i != 0: players[i], players[i - 1] = players[i - 1], players[i] return players list.index()의 시간 복잡도는 O(players의 길이)이다. for문을 callings 만큼 반복하므로 최악의 경우 시간 복잡도는 O(players의 길이 * callings의 길이)이다. 2️⃣ 풀이방법2 - 정답 딕셔너리를 이용해 찾고..

알고리즘

[프로그래머스 / Python] 이모티콘 할인행사

🧩 문제 이모티콘 할인행사 📍 정리 이모티콘 판매액을 늘리는 것 보다, 이모티콘 플러스 서비스 가입자를 최대한 늘리는 것이 우선이다.이모티콘은 10%, 20%, 30%, 40% 중 하나의 비율로 할인되며, 사용자는 자신이 설정한 기준에 맞게 이모티콘을 사거나, 이모티콘 플러스에 가입한다. 🌱 풀이과정 1️⃣ 할인율 조합 만들기 # 중복 순열로 할인율 조합 찾기 discounts = product([10,20,30,40], repeat = m) 2️⃣ 할인된 이모티콘 금액 구하기 - 사용자의 할인율 고려 for user in users: # 사용자의 구매 기준 rate, max_cost = user # 사용자의 이모티콘 결제 금액 buy_cost = 0 for i, emoticon in enumerate(..

허지렁이
'알고리즘' 카테고리의 글 목록 (3 Page)