Dev/Algorithm62 [백준] #11501 주식 - 파이썬 문제홍준이는 요즘 주식에 빠져있다. 그는 미래를 내다보는 눈이 뛰어나, 날 별로 주가를 예상하고 언제나 그게 맞아떨어진다. 매일 그는 아래 세 가지 중 한 행동을 한다.주식 하나를 산다.원하는 만큼 가지고 있는 주식을 판다.아무것도 안한다.홍준이는 미래를 예상하는 뛰어난 안목을 가졌지만, 어떻게 해야 자신이 최대 이익을 얻을 수 있는지 모른다. 따라서 당신에게 날 별로 주식의 가격을 알려주었을 때, 최대 이익이 얼마나 되는지 계산을 해달라고 부탁했다.예를 들어 날 수가 3일이고 날 별로 주가가 10, 7, 6일 때, 주가가 계속 감소하므로 최대 이익은 0이 된다. 그러나 만약 날 별로 주가가 3, 5, 9일 때는 처음 두 날에 주식을 하나씩 사고, 마지막날 다 팔아 버리면 이익이 10이 된다.입력입력의 .. 2025. 6. 4. [백준] #2512 예산 - 파이썬 문제국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것이다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정한다.모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정한다.모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을 배정한다. 상한액 이하의 예산요청에 대해서는 요청한 금액을 그대로 배정한다. 예를 들어, 전체 국가예산이 485이고 4개 지방의 예산요청이 각각 120, 110, 140, 150이라고 하자. 이 경우, 상한액을 127로 잡으면, 위의 요청들에 대해서 각각 120, 110,.. 2025. 6. 2. [백준] #15663 N과 M (9) - 파이썬 문제N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.N개의 자연수 중에서 M개를 고른 수열입력첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.출력한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.수열은 사전 순으로 증가하는 순서로 출력해야 한다.예제 입력 1 복사3 14 4 2예제 출력 1 복사24예제 입력 2 복사4 29 7 9 1예제 출력 2 복사1 71 97 17 99 19 79 9복기1. 아직 백트래킹이 익숙치 않는데 내부적으로 돌.. 2025. 5. 29. BFS는 왜 항상 최단거리를 보장할까? 1. 전제BFS는 모든 간선의 가중치가 동일한 그래프에서만 최단거리를 보장한다. 2. BFS가 동작하는 방식BFS는 시작 정점에서부터 거리 순으로 탐색한다- 0 거리 -> 시작점- 1 거리 -> 시작점과 인접한 점들- 2 거리 -> 거리 1 점들의 인접점들 (A) / \(B) (C) | |(D) (E) \ / (F)1) A에서 시작 (거리 0)2) B, C 방문 (거리 1)3) D, E 방문 (거리 2)4) F 방문 (거리 3)즉, A에서 F까지의 최단 경로는 A-B-D-F 또는 A-C-E-F, 거리 3이다. from collections import dequedef bfs_shortest_distance(graph, start): visited = set() .. 2025. 5. 27. [백준] #12865 평범한 배낭 - 파이썬 문제이 문제는 아주 평범한 배낭에 관한 문제이다.한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다.준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자.입력첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다... 2025. 5. 17. [백준] #3273 두수의 합 - 파이썬 문제n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i 입력첫째 줄에 수열의 크기 n이 주어진다. 다음 줄에는 수열에 포함되는 수가 주어진다. 셋째 줄에는 x가 주어진다. (1 ≤ n ≤ 100000, 1 ≤ x ≤ 2000000)출력문제의 조건을 만족하는 쌍의 개수를 출력한다.예제 입력 1 복사95 12 7 10 9 1 2 3 1113예제 출력 1 복사31. combination으로 풀었더니 시간 초과가 났다. 오토에버는 이런 류의 문제가 많나보다.2. 투포인터로 풀었더니 쉽게 풀 수 있었따. 솔루션import sysfrom itert.. 2025. 5. 16. [백준] #1914 하노이 탑 - 파이썬 문제세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다.한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다.쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다.이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다.아래 그림은 원판이 5개인 경우의 예시이다.입력첫째 줄에 첫 번째 장대에 쌓인 원판의 개수 N (1 ≤ N ≤ 100)이 주어진다.출력첫째 줄에 옮긴 횟수 K를 출력한다.N이 20 이하인 입력에 대해서는 두 번째 줄부터 수행 과정을 출력한다. 두 번째 줄부터 K개의 줄에 걸쳐 두.. 2025. 5. 16. [백준] #31247 2024는 무엇이 특별할까? - 파이썬 문제백준 온라인 저지의 신년대회 Hello, BOJ 2024!의 개최일은 2024년 1월 14일이다. 정휘는 대회가 개최된다는 사실이 기뻐 제목을 뚫어져라 보다가 2024가 무언가 특별하다는 사실을 깨달았다.그렇다. τo(n)$\tau_o(n)$을 n의 약수이면서 홀수인 양의 정수의 개수, τe(n)$\tau_e(n)$을 n$n$의 약수이면서 짝수인 양의 정수의 개수라고 할 때, τe(2024)=3τo(2024)$\tau_e(2024) =3\tau_o(2024)$을 만족한다. 다음에 이런 연도가 오려면 16년 뒤인 2040년이 되어야 한다. τe(x)=K×τo(x)$\tau_e(x) =K\times\tau_o(x)$를 만족하는 양의 정수 x$x$를 K$K$-특별한 수라고 정의하자. 양의 정수 N$N$과 .. 2025. 5. 16. [코드트리] 메이즈러너 - 파이썬 복기1. 처음에 배열을 벽, 참가자, 출구 모두 한번에 배열째로 돌리는 접근을 했는데 각각 나눠서 돌리는거로 많이들 풀더라. 이렇게 하면 전체를 회전시키지 않아도 되서 복잡도가 줄어든다고 한다. 이런 스타일도 배우고 익히자솔루션def move_people(): """사람들 이동(total_distance 추가, 목적지 도달하면 제거)""" distance = 0 for i, (x, y) in enumerate(people): # 상하 방향 먼저 체크 if exit_x x and maze[x+1][y] == 0: # 아래 people[i] = (x+1, y) distance += 1 # 좌우 방향 이후 체크 .. 2025. 4. 4. SW 역량 테스트 전, 삼성 빈출 코드 유형 정리 더보기삼성 코테는 구현 및 시뮬레이션 유형이 자주 나오는데 빈출 유형을 확실히 숙지하고 가면 좋을거 같다1. 회전회전하는 유형은 정말 자주 나오는데 뇌지컬만 구현하려고 할때 틀리기 쉽상이다. 꼭 외워두자.정사각형 회전arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]n = len(arr)# 시계방향 90도 회전arr_90 = [[0] * n for _ in range(n)]for i in range(n): for j in range(n): arr_90[j][n-i-1] = arr[i][j]print(arr_90)# 시계방향 180도 회전arr_180 = [[0]*n for _ in range(n)]for i in range(n): for j in range(n).. 2025. 4. 3. 이전 1 2 3 4 5 6 7 다음