알고리즘/프로그래머스문제풀이

[Python/프로그래머스]큰 수 만들기__Greedy(그리디)

개발자 덕구🐾 2022. 6. 19. 12:25
728x90

 

https://programmers.co.kr/learn/courses/30/lessons/42883

 

코딩테스트 연습 - 큰 수 만들기

 

programmers.co.kr

 

 

 


 

 

while (최근에 넣은 수 보다 지금 넣는 수가 더 크다면 ):

           pop을 해준다. 

 

그게 현재 가장 최적의 값이니까!!

 

 

 

 

 

 

코드 : 

def solution(number, k):
    answer = []
    
    for num in number :
        while k > 0 and answer and answer[-1] < num :
            answer.pop()
            k -= 1 
        answer.append(num)
    return ''.join(answer[:len(answer)-k])

 

 

문제를 풀고 든 생각 :  왜 반환할 때 [:len(answer)-k]일까?

 

 

그냥 [:-k] 해도 될텐데 

라고 생각해서 그렇게 만들어 제출하였는데 틀렸다. 

 

그 이유는 k가 0일 때 [:0]이 되어버려서 아무것도 안나오기때문이다. 

물론 k가 있다면 잘 작동한다.

 

그래서 if문을 이용하도록 만들면 [:-k]를 이용해도 된다.

 

 

 

반환할 때 [:-k]사용 코드 : 

def solution(number, k):
    arr = []
    for n in number :
        while k and arr and arr[-1] < n :
            arr.pop()
            k-=1
        arr.append(n)
        
    return (''.join(arr))[:-k] if k  else  ''.join(arr)

이렇게 

A if 조건 else B를 이용할 수 있다. 

 


 

 

 

참고 블로그 :

https://velog.io/@soo5717/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%81%B0-%EC%88%98-%EB%A7%8C%EB%93%A4%EA%B8%B0-%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

Programmers | 큰 수 만들기 - Python

1주차 알고리즘 스터디 - 탐욕법 (Greedy) : 프로그래머스 Level2 큰 수 만들기 접근 방식 및 풀이 과정

velog.io

 

 

 

복습 :

 

20220622

✅ 20220624

✅ 20220626

✅ 20220630

반응형