본문 바로가기

이코테10

[Greedy] 이코테 - 문자열 뒤집기(py) 문제 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 풀이 - 내 풀이 s = input() one = s.split('0') zero = s.split('1') one_len = 0 zero_len = 0 for i in one: if i != '': one_len += 1 for i in zero: if i != '': zero_len += 1 print(zero_len) if zero_len < one_len else print(one_len) 0과 1로 이루어진 문자열의 연속된 부분들을 부분 집합으로 .. 2023. 7. 11.
[Greedy] 이코테 - 곱하기 혹은 더하기(py) 문제 각 자리가 숫자(0부터 9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하세요. 단, +보다 x를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정합니다. 예를 들어 02984라는 문자열이 주어지면, 만들어질 수 있는 가장 큰 수는 ((((0+2)x9)x8)x4) = 576입니다. 또한 만들어질 수 있는 가장 큰 수는 항상 20억 이하의 정수가 되도록 입력이 주어집니다. 입력 조건 첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어집니다.(1 2023. 7. 11.
[Greedy] 이코테 - 1이 될 때까지(py) 문제 어떠한 수 N이 1이 될 때 까지 다음의 두 과정 중 하나를 반복적으로 선택해 수행하려고 한다. 단, 두번째 연산은 N이 K로 나누어 떨어질 때만 선택할 수 있다. N에서 1을 뺀다. N을 K로 나눈다. N과 K가 주어질 때 N이 1이 될 때 까지 1번 혹은 2번의 과정을 수행해야 하는 최소 횟수를 구하는 프로그램을 작성하시오. 입력 조건 첫째 줄에 N(2 2023. 7. 9.
[Greedy] 이코테 - 큰 수의 법칙(py) 문제 나동빈, 「이것이 취업을 위한 코딩테스트다 with 파이썬」, 한빛미디어, p.92 참고 풀이 - 단순 풀이 예시 n, m, k = map(int, input().split()) data = list(map(int, input().split()) data.sort() first = data[n - 1] second = data[n - 2] result = 0 while True: for i in range(k): if m == 0: break result += first m -= 1 if m == 0: break result += second m -= 1 print(result) - 반복되는 수열 활용 풀이 => 수열의 길이 = (k + 1), 수열이 반복되는 횟수 = m / (k + 1), 가장 .. 2023. 7. 9.