-
27. 큰 수 만들기Problem Solving 2022. 9. 19. 06:04728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42883#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
integer를 받아 k개만큼 수를 지울 때, 가장 큰 수는 무엇이 될지 출력하는 문제
숫자의 위치를 옮기지 않아야 함
def solution(number, k): number = str(number) length = len(number) - k if length == 1: return max(number) maxidx = number.find(max(number[:-(length-1)])) newnumb = number[maxidx:] if len(newnumb) == length: return newnumb else: n = 1 # for i in range(1, len(newnumb)): while n <= length: if newnumb[n - 1] < newnumb[n]: newnumb = newnumb[:n - 1] + newnumb[n:] n = n - 2 if len(newnumb) == length: return newnumb n = n + 1 newnumb = newnumb[:-1] return newnumb
푸는 데 정말 오래 걸린 문제ㅠ index 에러 해결이 특히 오래 걸림
number = "4177252841", k = 4일 때, return 하는 숫자는 6개 digit으로 이루어져 있을 테니 "41772" 중 가장 큰 수(=7)가 맨 앞자리가 된다. 7 이전의 수는 버려도 되니 newnumb = "77252841"이 된다.
여기서 숫자 2개를 더 제거해야 하는데, 앞에서부터 하나씩 확인하면서 현재 위치의 숫자가 바로 앞자리 숫자보다 더 크다면(2보다 5가 큼) 앞의 수를 지우는 방식.
"77252841" -> "7752841" -> "775841"
'Problem Solving' 카테고리의 다른 글
29. 문문문 (0) 2022.09.19 28. 큰 수 A+B (4) 2022.09.19 26. 하샤드 수 (4) 2022.09.16 25. Power of Four (0) 2022.09.15 24. Lemonade Change (0) 2022.09.14