코딩 기록소
[Python] 그리디 알고리즘을 파헤쳐 보자! (곱하기 혹은 더하기)
Python 알고리즘 2022. 1. 24. 23:32

문제 각 자리가 숫자(0부터 9)로만 이루어진 문자열 S가 주어졌을 떄, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하세요. 단, +보다 x를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정합니다. 예를 들어 02984라는 문자열로 만들 수 있는 가장 큰수는 ((((0 + 2) x 9) x 8) x4) = 567입니다. 또한 만들어질 수 있는 가장 큰 수는 항상 20억 이하의 정수가 되도록 입력이 주어집니다. 입력 02984 출력 576 정답 import sys s = sys.stdin.readline().strip() result = int(s[..

[Python] 그리디 알고리즘을 파헤쳐 보자! (1이 될 때까지)
Python 알고리즘 2022. 1. 24. 23:02

그리디 알고리즘이란? 그리디 알고리즘 또는 탐욕벅이라고 불린다. 현재 상황에서 가장 좋은 정답을 찾는 알고리즘이지만, 항상 최적의 해를 보장할 수 없다. 코딩 테스트에서는 대부분 그리디 알고리즘을 통해 얻은 해가 최적의 해가 되는 상황을 부여하기 때문에 가장 최적의 해를 찾아 문제를 풀 수 있어야 한다. 여러가지 예시를 보고 이해를 해보자. 문제 어떠한 수 N이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행하려고 합니다. 단, 두 번째 연산은 N이 K로 나누어 떨어질 때만 선택할 수 있습니다. 1-1. N에서 1을 뺍니다. 1-2. N을 K로 나눕니다. 입력 25 4 출력 5 정답 import sys n, k = list(map(int, sys.stdin.readline().stri..