문제 출처: www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 1. 문제 접근 방식 - 먼저 세개의 구간으로 나누어야 했다. 그 나눠진 구간들에서 하나씩을 선택하여 3개의 값을 구하는 과정을 반복해가면서 주어진 값을 넘지 않는 최대의 값을 구하였다. 2. 내가 푼 코드 import sys N, M = map(int, sys.stdin.readline().split()) num = list(map(int, sys.stdin.rea..
문제 출처: www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 1. 문제 접근 방식 - 먼저, 하노이탑의 동작 방식을 파악하는 것이 중요하다. 첫번째 단계는 가장 밑의 판을 제외한 나머지를 중간으로 옮기고 가장 밑의 판은 마지막으로 옮긴다. 마지막으로 가운데에 있는 판들을 마지막으로 옮겨주면 끝이 난다. 2. 내가 푼 코드 import sys N = int(sys.stdin.readline()) # n개의 원판이 있을 경우 가장 밑의 원판을 제외한..
문제 출처: www.acmicpc.net/problem/1057 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 1. 문제 접근 방식 - 토너먼트의 원리를 이용하여 두 수를 2로 나눈 몫을 서로 같아질때까지 빼다보면 라운드 수가 나올 것이라고 생각하였다. 2. 내가 푼 코드 import sys N, k, l = map(int, sys.stdin.readline().split()) cnt = 0 # 같아질 때까지 반복 while k != l: k -= k // 2 l -= l // 2 cnt += 1 print(cnt..
문제 출처: www.acmicpc.net/problem/1251 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 1. 문제 접근 방식 - 구간을 설정하여 단어를 나누고 list형태로 만든 후 sort()함수를 이용하여 정렬한 뒤 가장 첫번째 값을 출력하는 방법을 생각하였다. 2. 내가 푼 코드 word = list(input()) ans = [] tmp = [] # 범위 설정하여 문자열 나누기 for i in range(1, len(word)-1): for j in range(i+1, len(word)): a ..