백준 2236 칩 만들기 (파이썬)
2023. 9. 22. 15:36
백준
실버문제 잘 안올리라하는데 이 문제는 푼 사람이 많이 없어서 씀 풀이 및 해설 N, K = map(int, input().split()) tmp_nums = list(map(int, input().split())) nums = [] for _ in range(N): nums.append([tmp_nums[_], _, 0]) sorted_nums = sorted(nums, key=lambda x: (-x[0], -x[1])) rst = [] for k in range(K): if k < N: # 전원선 수가 부품 수보다 클 수 있으므로 확인 sorted_nums[k][2] = sorted_nums[k][1] + 1 rst.append(sorted_nums[k][1] + 1) # 연결된 전원선 출력 for ..
백준 2346 풍선 터뜨리기 (파이썬)
2023. 7. 3. 20:40
백준
풀이 및 해설(주석) import sys def main(): # 입력받기 N = int(sys.stdin.readline().strip()) tmp_nums = list(map(int, sys.stdin.readline().strip().split())) # 입력받은 수들을 인덱스와 함께 쌍으로 묶어 nums 리스트 생성 nums = [(i, tmp_nums[i]) for i in range(N)] target_idx = 0 # 현재 타겟 인덱스 초기화 rst = [] # 결과값을 담을 리스트 초기화 for i in range(N): idx, num = nums.pop(target_idx) # nums에서 타겟 인덱스에 해당하는 요소를 추출 rst.append(idx) # 인덱스 값을 결과 리스트에 추..
백준 14889 스타트와 링크 (파이썬)
2023. 5. 22. 15:19
백준
풀이 및 해설(주석) - v1 import sys from itertools import combinations N = int(sys.stdin.readline()) skills = [list(map(int, sys.stdin.readline().strip().split())) for _ in range(N)] nst = [i for i in range(1, N+1)] rst = 9e9 # 조합 사용해서 풀기 N은 짝수이므로 일단 두 팀이 될 수 있는 모든 조합을 생성 candi_t1_all = list(combinations(nst, N//2)) # t1의 팀이 정해지면 t2는 그 외의 나머지 선수니까 구한 조합의 반만 사용해도 됨 for i in range(len(candi_t1_all)//2): t..
백준 1021 회전하는 큐 (파이썬)
2023. 5. 22. 12:58
백준
풀이 import sys from collections import deque def main(): N, M = map(int, sys.stdin.readline().strip().split()) lst = list(map(int, sys.stdin.readline().strip().split())) Q = deque(range(1, N+1)) rst = 0 for num in lst: lst_len = len(Q) num_idx = Q.index(num) if num_idx
백준 1063 킹 (파이썬)
2023. 5. 15. 21:26
백준
쉬운 것 부터 알고리즘 다시 시작! import sys # sys.stdin = open('input.txt', 'r') move_map = { "R": [0, 1], "L": [0, -1], "B": [1, 0], "T": [-1, 0], "RT": [-1, 1], "LT": [-1, -1], "RB": [1, 1], "LB": [1, -1] } def move_chess(piece_r, piece_c, move): return piece_r + move_map[move][0], piece_c + move_map[move][1] def is_valid_position(r, c): return 0
백준 14716 현수막 (자바)
2023. 1. 16. 21:59
백준
풀이 import java.io.*; import java.util.*; public class Main { public static int N, M; public static int cnt = 0; public static int[][] arr; public static boolean[][] visited; public static Deque Q = new ArrayDeque(); public static int[] di = {1, 0, -1, 0, -1, -1, 1, 1}; public static int[] dj = {0, 1, 0, -1, -1, 1, -1, 1}; public static void main(String[] args) throws IOException { BufferedReader..
백준 1463 1로 만들기 (파이썬)
2023. 1. 16. 21:31
백준
풀이 def solve(): dp = [0] * (N+1) for i in range(2, N+1): dp[i] = dp[i-1] + 1 if i % 2 == 0: dp[i] = min(dp[i], dp[i//2] + 1) if i % 3 == 0: dp[i] = min(dp[i], dp[i//3] + 1) print(dp[N]) if __name__ == '__main__': N = int(input()) solve() 해설 dp의 인덱스는 그 인덱스 수의 최소 연산을 가지고 있음 인덱스 1의 값은 당연히 0이고 2는 1임 (+1 또는 2로 나누기) 3가지 경우의 수 중에 가장 적은 연산을 타고올라감
백준 1074 Z (파이썬)
2022. 12. 25. 22:21
백준
풀이 및 해설(주석) def solve(n, r, c): global rst if r == tr and c == tc: print(rst) exit() # 찾는 위치에서 벗어난 경우 n의 범위만큼 더해주고 return if not(r