CodingTest 14

백준 21314번 민겸 수 풀이 및 정답(python)

[백준 21314번 민겸 수] 문제 설명 및 풀이정해진 규칙대로 최댓값과 최솟값을 구해줘야합니다. 저의 경우 조금 더 계산하기 편한 최솟값부터 구했습니다. 최솟값을 구해보자1. M과 K가 만났을 경우=> M과 K를 각각 분리해줍니다. 합치면서 계산하면 큰 숫자가 됩니다.앞에 M이 몇개든 결합하지 않고 K는 무조건 5로 출력합니다.2. M끼리는 결합해주자=> MM을 따로따로 11로 계산할수도 있지만 결합해주면 10으로 오히려 작은 숫자가 되기 때문에 결합해줍니다. 최댓값을 구해보자1. M과 K를 결합해줍니다.=> M과 K가 만나면 큰 숫자가 됩니다. MK = 50, MMK = 500등등. m의 개수를 파악해두고 K가 나온다면 결합해주는것이 좋습니다.2. K가 안나오면?=> K를 만나지 못한 m들은 각각 따..

CodingTest/Content 2025.03.30

백준 1541번 잃어버린 괄호 풀이 및 정답(python)

문제 설명 및 풀이주어진 식에서 적절히 괄호를 쳐서 가장 작은 값을 찾아야 합니다.가장 작은 값을 찾기위해서는 마이너스를 기준으로다음 마이너스가 나올때 까지 값을 하나로 묶어주면 됩니다. 예시) 15-30+40 -> 15-(30+40)정답 예시 코드import sysinput = sys.stdin.readlinegiven_str = input()# 마이너스 기준으로 splitsplit_str = given_str.split("-")min_number = 0idx = 0for str in split_str: a = 0 for x in str.split("+"): a += int(x) if idx == 0: min_number += a else: m..

CodingTest/Content 2025.03.25

백준 20300번 서강근육맨 풀이 및 정답(python)

문제 설명 및 풀이한번에 2개의 기구씩 쓸 수 있으며 각 기구의 근손실 정도가 주어집니다.근손실 수치의 2개의 기구를 이용하는 경우 2개의 합,1개의 기구를 이용하는 경우 해당 기구의 근손실 정도입니다.최소 근손실 수치가 목적이기 때문에 짝수개의 기구가 주어지는 경우,홀수개의 기구가 주어지는 경우를 구분합니다. => 오름차순으로 기구를 정렬합니다.=> 가장 작은값과 가장 큰 값을 더해 가장 크게 나오는 수를 찾습니다.=> 홀수면 기구가 하나 남기에 가장 큰 값 하나를 max로 먼저 잡고 시작합니다.정답 예시 코드import sysinput = sys.stdin.readlinen = int(input())loss_list = list(map(int, input().split()))# 기계가 홀수개인지 체크..

CodingTest/Content 2025.03.24

백준 11508번 2+1 세일 풀이 및 정답(python)

문제 설명 및 풀이2개를 사면 1개를 공짜로 주기 때문에가장 비싼 것부터 정렬하면 가장 이득을 볼 수 있습니다. => 내림차순으로 정렬=> 3번째 아이템마다 가격계산 안하고 점프정답 예시 코드import sysinput = sys.stdin.readlinen = int(input())price_list = [int(input()) for _ in range(n)]price_list.sort(reverse=True)total_price = 0count = 0for price in price_list: count += 1 if count % 3 == 0: count = 0 continue total_price += priceprint(total_price)

CodingTest/Content 2025.03.24

백준 14916번 거스름돈 풀이 및 정답(python)

문제 설명주어진 금액을 5원과 2원짜리 동전을 가지고최소의 동전으로 거슬러 주는 문제입니다. 풀이5원을 가장 많이 쓰는 방향을 찾아야합니다.주어지는 수를 5원으로 나눈 뒤 2원으로 나눠지는 값이 있는지 찾습니다. 예를 들어 21원인 경우5원으로 4개, 2원으로 나눌 수 없음5원으로 3개, 2원로 거슬러 줄 수 있음 정답 예시 코드givenMoney = int(input())maxValue = givenMoney // 5fiveCoin = maxValuewhile fiveCoin >= 0: remain = givenMoney - (fiveCoin * 5) if (remain % 2) == 0: print(fiveCoin + (remain // 2)) break fi..

CodingTest/Content 2025.03.23

백준 2798번 블랙잭 풀이 및 정답(python)

문제 설명 및 풀이주어진 카드 뭉치 중 3장을 찾고 목표하는 숫자보다 작거나 같으면서 최대한 큰 조합을 찾는 문제입니다. 모든 경우의 수를 다 찾아봐야하기 때문에 가장 쉽게는 3중 for문으로 풀 수 있습니다.파이썬의 경우 내장함수인 combinations를 통해 3장의 조합을 찾을 수 있습니다.정답 예시 코드from itertools import combinations# 입력n, m = map(int, input().split())card_list = list(map(int, input().split()))# 3장 중 m 보다 작으면서 가장 큰 조합 찾기sum_value = 0for three_card in combinations(card_list, 3): if sum(three_card)

CodingTest/Content 2025.02.08

백준 2309번 일곱난쟁이 풀이 및 정답(python)

7명의 난쟁이 합이 100이 되는 경우를 찾고 하나씩 출력하는 문제이며,7중 for문을 쓰면 귀찮은 방법이 되기 때문에 두 가지 방법을 제시할 수 있습니다. 1. 2명 합만 찾는 법-> 9명의 난쟁이 합을 구한다.-> 2명을 제외 시켜 나머지 7명 합이 100되는 경우를 찾는다.-> 해당되는 7명을 정렬하여 한명씩 출력한다. 2. 내장함수 combinations를 통한 방법-> combinations를 통해 7명 합이 100이 되는 경우를 찾는다-> 해당되는 7명을 정렬하여 한명씩 출력한다.  from itertools import combinations#입력heights = [int(input()) for _ in range(9)]# 7명 합이 100인 경우 찾고 하나씩 출력for seven_h in ..

CodingTest/Content 2025.02.08

백준 2331번 분해합 풀이 및 정답(python)

O(n) 풀이해당 문제는 단순히 1부터 n까지 분해합을 찾으면서 답을 구해도 되는 문제입니다.이렇게 하면 O(n)의 시간복잡도를 가지고 풀 수 있습니다.하지만 막상 다른 사람들 제출한 시간을 보면 차이가 꽤 있을겁니다. O(n) 풀이 + 분해합 특성 이용하지만 분해합의 특성을 이용해서 시간을 줄일 수 있습니다.분해합의 특성은 특정 자연수 n의 분해합은 n + (n의 자리수 * 9)까지라는 점입니다.쉽게 999를 예시로 보면999의 분해합은 999 + 9 + 9 + 9 라는 것이고이 특성을 활용해서 분해합을 찾을 때 범위를 좁혀시작할 수 있습니다. Python 정답코드n = int(input())answer = 0start_value = max(1, n - (len(str(n)) * 9))for i in ..

CodingTest/Content 2025.02.05

자료구조 면접 질문 리스트, 기출 모음(신입 면접, 대학원)

질문만 모음트리와 그래프의 차이에 대해서 설명하시오 그래프 탐색 방법에 대해서 설명하시오 Heap이 무엇인지 설명하시오 Heap 자료구조에서 데이터 추출시에 시간복잡도가 어떻게 되는지 설명하시오 본인이 생각하는 가장 효율적인 정렬과 그것의 시간복잡도가 어떻게 되는지 설명하시오 탐욕 알고리즘과 동적 계획법을 각각 설명하시오 Stack과 Queue에 대해서 설명하시오 Stack과 Queue의 실사용 예시 List, Set, Map에 대해서 각각 설명하시오 Array, ArrayList, LinkedList에 대해서 각각 설명하시오 Array를 적용시키면 좋은 데이터는? HashMap과 HashTable에 대해 설명하시오 우선순위 큐에 대해서 설명하시오 BST(Binary Search Tree)와 Binary..

CodingTest/Content 2024.12.05

백준 코딩테스트(알고리즘) 초보 문제 추천 모음(브론즈~골드5)(파이썬 풀이 업데이트 중)

문제를 단순히 풀어가기만 하다가 계속 까먹고 해서 풀려고 하는 문제들이나 풀어온 문제들을 정리하려고 합니다. 좋은 문제들의 선정 기준은 여러 글과 유튜브들, 백준내에서 제출 답변 수 등을 참고했습니다. 문제 난이도는 브론즈~골드5입니다. 브론즈 문제와 실버 난이도 문제 위주이며 본격적인 골드 난이도 문제는 별도 포스팅으로 업데이트할 예정입니다. 혹시 풀이를 원하는 문제가 있다면 댓글로 남겨주시면 감사하겠습니다. 풀 수 있는 선에서 최대한 풀어서 풀이 올려보겠습니다. 풀이는 문제 설명과 그림이 필요한 경우 그림을 포함하여 Python으로 풀이를 제시하고 있습니다.  ▶◀ ①②③④⑤⑥⑦⑧⑨⑩ 추가완료그리디구현DFSBFS완전탐색예정정렬이진탐색DP최단경로(다익스트라, 플로이드와샬)기타 알고리즘(소수, 구간 합,..

CodingTest/Index 2024.11.23