티스토리 뷰
1. 문제 설명
(1) 곱하기 혹은 더하기
- 각 자리가 숫자(0~9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하여 숫자 사이에 '*' 혹은 '+' 연산자를 넣는다.
- 결과적으로 만들어 질 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.
- 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정한다.
연산 결과는 항상 20억 이하의 정수가 되도록 입력한다.
(2) 입력 조건
- 첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어진다.(1 <= S의 길이 <= 20)
(3) 출력 조건
- 첫째 줄에 만들어질 수 있는 가장 큰 수를 출력한다.
2. 내가 생각한 풀이
# 숫자로 구성된 문자열 입력
s = input()
# 문자열의 각 원소를 숫자로 변경하여 리스트로 저장
nums = []
for i in s:
nums.append(int(i))
# 숫자가 0 혹은 1이면 더하기를 나머지 숫자일 경우 곱하기를 진행
result = nums[0]
for j in range(1, len(nums)):
# 조건문 설정에서 틀림
if nums[j] == 0 or nums[j] == 1 or result == 0:
result += nums[j]
else:
result *= nums[j]
print(result)
- 우선적으로 result 변수에 문자열의 첫 번째 숫자(0번 인덱스)를 저장한다.
- 그리고 그 다음 숫자가 0 혹은 1인 경우 result에 값을 더해주고
- 그 외의 숫자인 경우 result에 값을 곱하면 쉽게 정답을 구할 수 있다.
3. 틀린 부분
result = nums[0]
for j in range(1, len(nums)):
# if nums[j] == 0 or nums[j] == 1 or result == 0:
# result += nums[j]
if nums[j] <= 1 or result <= 1:
result += nums[j]
else:
result *= nums[j]
- 반복문 내에서 조건 설정이 조금 잘 못 되었다.
- 문제에서 요구하는 최댓값을 얻기 위해서는 result의 값이 1인 경우에도 더하기를 진행해야 한다.
- 나는 result가 0인 경우에만 더하기를 진행했기 때문에 오답이 된다.
4. 후기
이 문제는 접근 방법은 얼추 맞았으나 코드 구현에 있어서 사례들을 꼼꼼하게 살피지 않아서 오답이 발생한 사례가 되었다. 이전 문제에서는 문제를 꼼꼼하게 읽지 않아서 오답이 되었다면 이번 문제에서는 사례를 꼼꼼하게 살피지 않아서 오답이 되었다. 옛날 학창시절에 나는 공부의 양에 신경을 썼는데 요즘에는 양은 적더라도 공부의 질을 높이는데 중점을 둬야 겠다는 너무 당연한 사실을 깨닫게 되었다. 이미 공부했던 문제들을 복습하면서 코딩의 질을 높이는 방법을 강구하려고 한다. 급하게 생각하지 말고 천천히 가자.
github : Algorithms/q2_0.py at main · LeeSeok-Jun/Algorithms (github.com)
LeeSeok-Jun/Algorithms
Practice algorithms 2020. Contribute to LeeSeok-Jun/Algorithms development by creating an account on GitHub.
github.com
'이것이 취업을 위한 코딩 테스트다 with 파이썬 > 11장_그리디 알고리즘' 카테고리의 다른 글
문제 06 : 무지의 먹방 라이브(난이도 : 1/3) (0) | 2021.06.29 |
---|---|
문제 05 : 볼링공 고르기(난이도 : 1/3) (0) | 2021.05.18 |
문제 04 : 만들 수 없는 금액(난이도 : 1/3) (0) | 2021.05.17 |
문제 03 : 문자열 뒤집기(난이도 : 1/3) (0) | 2021.05.17 |
문제 01 : 모험가 길드(난이도 : 1/3) (0) | 2021.05.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- python
- 파이썬
- 카카오
- 마르코프 연쇄
- 탐욕법
- 비트 마스크
- 난이도:중
- 프로그래머스
- 구현
- 프로그래밍 대회에서 배우는 알고리즘 문제해결 전략
- 프로그래밍 대회에서 배우는 알고리즘 문제해결전략
- k번째 답 계산하기
- 난이도:하
- 동적 계획법
- 그리디
- 종만북
- 프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략
- 난이도:상
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함