Notice
Recent Posts
Recent Comments
Link
컴퓨터는 잘못이 없다..
[알고리즘]그리디_곱하기 혹은 더하기(파이썬 문자를 숫자로 바꾸는 방법) 본문
Contents
접기
[곱하기 혹은 더하기 문제 설명]
-난이도 : ★☆☆
-풀이시간 : 30분
-시간 제한 : 1초
-메모리 제한 : 128MB
-기출 : Facebook 인터뷰
-출처 : 이것이 코딩 테스트다 p.312
-문제 : 각 자리의 숫자(0부터9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하세요.
단, +보다 x를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정합니다.
예를들어 02984라는 문자열이 주어지면, 만들어질 수 있는 가장 큰 수는 576입니다. 또한 만들어질 수 있는 가장 큰 수는 항상 20억 이하의 정수가 되도록 입력이 주어집니다.
입력조건 : 첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어집니다.
출력조건 : 첫째 줄에 만들어질 수 있는 가장 큰 수를 출력합니다.
-입력예시1 02984 |
-출력예시1 576 |
-입력예시2 567 |
-출력예시2 210 |
[곱하기 혹은 더하기 답안1]
#숫자로 된 문자열 입력받기
data = input()
#첫번째 문자를 숫자로 변경하여 대입
result = int(data[0])
for i in range(1, len(data)) :
#이 전 문자 다음 문자를 숫자로 변경하여 대입
num = int(data[i])
if num <=1 or result <=1 :
result += num
else :
result *= num
print(result)
[답안1 설명]
0이나 1일 경우는 +하는 것이 최대의 수를 만들 수 있다!!
그 외에는 *를 해주는 것이 최대의 수를 만들 수 있다.
'공부 > 알고리즘(파이썬)' 카테고리의 다른 글
[알고리즘]그리디_문자열 뒤집기(파이썬 min함수) (0) | 2020.11.18 |
---|---|
[알고리즘]그리디_숫자 카드 게임(파이썬 max함수) (0) | 2020.11.09 |
[알고리즘]그리디 알고리즘_문제제목(파이썬관련) (0) | 2020.11.09 |
Comments