본문 바로가기

알고리즘66

[BOJ] 12852. 1로 만들기 2 문제https://www.acmicpc.net/problem/12852 12852번: 1로 만들기 2첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다.www.acmicpc.net  주요 아이디어앞에서 풀었던 '1로 만들기' 문제의 로직을 그대로 가져다 쓰려고 했다.  코드 구현 (Python 3)더보기 n = int(input())dp = [0] * (n+1)# dp[i] = i를 만들기 위해 필요한 최소 연산횟수for i in range(2, n+1): # 1을 빼기 dp[i] = dp[i-1] + 1 # 2로 나눠진 것 전에서 더하기 1 if i % 2 == 0: dp[i] = mi.. 2024. 4. 24.
[BOJ] 1463. 1로 만들기 문제 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 주요 아이디어 1~n까지의 dp list를 만들고, 해당 숫자를 만들기 위해 필요한 최소 연산 횟수를 구하면 된다. 코드 구현 (Python 3) 더보기 n = int(input()) dp_list = [0] * (n+1) # 1로 만들기니까 2 이상부터 시작 for i in range(2, n+1): # 기본적으로 할 수 있는 연산 = 이전 연산횟수에서 빼기 한번이므로 +1 dp_list[i] = dp_list[i-1] + 1 if i%2 == 0: # 이전 연산 (i*2) 에서 나누기 한번이므로 +1 .. 2024. 4. 21.
[BOJ] 12865. 평범한 배낭 문제 https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 개인적으로 좀 어려웠던 문제.. 주요 아이디어 처음 생각했던 방법은, 가치 기준 내림차순 & 같은 가치일 경우 무게 기준 오름차순 한 다음 for문을 돌면서 하나씩 더해주며 최대값을 찾는 방법이었다. 코드 구현 (Python 3) 더보기 n, k = map(int, input().split()) items = [] for _ .. 2024. 4. 21.
[BOJ] 1026. 보물 문제 https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 주요 아이디어 전체 합을 최소값으로 만들려면, (현재 A배열의 최대값) * (현재 B배열의 최소값) 을 하나씩 더해주면 된다. 코드 구현 (Python 3) 간단하게 풀려면, A를 오름차순 / B를 내림차순 해서 곱한 후 하나씩 더해주면 된다. 더보기 n = int(input()) a = list(map(int, input().split())) b = list(map(int, inpu.. 2024. 4. 21.
[프로그래머스] 단어 변환 문제 https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr BFS로 간단하게 풀어보자! 주요 아이디어 가장 짧은 변환 과정 -> 최단 경로 -> BFS를 떠올려야 한다 begin을 queue에 넣고 시작 하나씩 popleft() 하면서 순회 visited에 방문 처리 한 글자가 다른 단어로만 변환 가능하므로, 인접 노드는 한 글자만 다른 것들 넣기 최단 경로이므로 target과 가장 가까운 순서대로 pop해야 함 변환 안될 경우 0을 반환해서 예외처.. 2024. 4. 11.
[프로그래머스] 행렬 테두리 회전하기 문제 https://school.programmers.co.kr/learn/courses/30/lessons/77485 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 잘 읽어보고 해결만 하면 되는 문제이다. 주요 아이디어 지정된대로 숫자를 차례대로 넣어서 원래 배열을 만들어주자 arr에 저장된 value를 하나씩 swap하면서 시계 방향으로 회전 swap할 전체 횟수를 지정해주고, dx, dy로 회전 방향을 정해주면 된다 코드 구현 (Python 3) 더보기 def solution(rows, columns, queries): arr = []; answer.. 2024. 4. 11.