문제 어떤수 N이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행하려고한다. 단, 두번째 연산은 N이 K로 나누어떨어질 때만 선택할 수 있다. 1. N에서 1을 뺀다. 2. N을 K로 나눈다. 예를 들어 N = 17, K = 4일 경우 1) 17 - 1 = 16 2) 16 // 4 = 4 3) 4 // 4 = 1 전체 과정을 실행한 횟수는 3이 된다. 이는 N을 1로 만드는 최소 횟수이다. 나의 코드 # 1) N에서 1을 뺀다 # 2) N을 k로 나눈다. # 1) N/K 가 나누어 떨어지는 경우 나눗셈 실행 (우선실행해야 횟수를 최소한으로 할 수 있다.) # 2) 나누어떨어지지 않은 경우 -1 실행 N = 17 K = 4 count = 0 while N != 1: if N % K !=..
문제 다양한 수로 이루어진 배열이 있을때 주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙이다. 단, 배열의 특정한 인덱스에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없다. list = [2, 4, 5, 4, 6], M = 8, K = 3 이 경우 특정한 인덱스의 수가 연속해서 세번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과는 6 + 6 + 6 + 5 + 6 + 6 + 6 + 6 = 46이 된다. 나의 코드 # 가장 큰 수를 k번 반복 # 두번째로 작은 수를 k번 반복 후 넣고 또다시 가장 큰수 반복 # 위를 실행하며 M개 미만인지 체크해야한다. test = [2, 4, 5, 4, 6] m = 8 # 개수 제한 k = 3 # 반복 개수 제한 # 가장 큰 수 max_value = ma..
문제 정수 X가 주어질때 정수 X에 사용할 수 있는 연산은 다음과 같이 4가지이다. 1) X가 5로 나누어떨어지면, 5로 나눈다. 2) X가 3으로 나누어 떨어지면, 3으로 나눈다. 3) X가 2로 나누어 떨어지면, 2로 나눈다. 4) X에서 1을 뺀다. 정수 X가 주어졌을때, 연산 4개를 적절히 사용해서 1을 만들어야한다. 이 연산을 사용하는 횟수의 최솟값을 출력해라. X = 26일 경우 1. 26 - 1 = 25 2. 25 /5 = 5 3. 5 / 5 = 1 출력값 : 3 나의 코드 풀이를 완성하지 못했다. 우선 마지막까지 해본 코드는 아래와 같다. 몫과 나머지를 이용해서 풀어보려고 했지만 최소 횟수를 구하기에는 역부족이였다. value = 26 result = 0 while value != 1: #..
문제 개미 전사는 부족한 식량을 충당하고자 메뚜기 마을의 식량창고를 몰래 공격하려고 한다. 메뚜기 마을의 식량창고는 일직선으로 이어져있고, 개미 전사는 선택적으로 약탈하여 식량을 빼앗을 예정이다. 이때 메투기 정찰병들은 일직선상에 존재하는 식량창고 중에서 서로 인접한 식량창고가 공격받으면 바로 알아챌 수 있다. 따라서 개미 전사는 정찰병에게 들키지않기 위해 최소한 한 칸 이상 떨어진 식량창고를 약탈해야한다. 예시 [1, 3, 1, 5] 개미전사는 두번째 식량창고와 네번째 식량창고를 선택했을때 최대값인 8개의 식량을 빼앗을 수 있다. 나의 코드 list = [1, 3, 1, 5] odd_sum = 0 even_sum = 0 for i, value in enumerate(list): if i % 2 == 0..