Hippo's data
[프로그래머스] 가장 큰 수 Python 풀이 본문
프로그래머스(Programmers) 가장 큰 수 문제
난이도 : Level 2
<문제 링크>
https://school.programmers.co.kr/learn/courses/30/lessons/42746
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
<처음 코드>
numbers.sort(key = lambda x: x[0],reverse=True)
저는 처음에 제일 앞자리 수를 큰 수대로 정렬하면 되겠다 싶어서 위 방법을 사용했는데
아니나 다를까 틀리더라구여,,,, 생각해보니
같은 자리수의 숫자들 같은 경우에는 더 큰 숫자가 먼저나오면 되지만
다른 자리 숫자끼리 비교시에는 고민이 필요하드라구요
예시로 34와 3 두개를 비교하면
343 / 334 -> 34가 먼저 나오고 3이 나와야 더 큰 수가 만들어지드라구요
이를 어떻게 판단할 수 있을까요??
특정 수를 연속으로 붙인 후 서로 비교하면 됩니다!! 특히 조건에서 numbers 원소는 1000이하라구 했으니 처음부터 4자리[:4] 까지 비교하면 되겠죠
왜 연속으로 붙인 후 비교하면되나욥?
34를 예시로 들면 34다음에 올 수 있는 가장 큰 수는 34가 되겠죠 ( 34보다 더 큰 수는 이미 34 앞에 존재합니다)
특정 수 뒤로 올 수 있는 가장 큰 수를 연속으로 붙인 후 비교하여 구현가능한 가장 큰 수를 찾으면 됩니다
예시로 다시 34와 3을 비교한다면, 연속으로 붙여서 4자리까지 자른 후 비교해서 더 큰 수가 앞으로 오면 됩니다!!
3434 > 3333 -> 34가 먼저 와야겠죠
이를 코드로 구현하면 아래와 같이 됩니다
numbers.sort(key = lambda x: (x*4)[:4],reverse=True)
<수정된 코드>
'Algorithm > 프로그래머스(programmers)' 카테고리의 다른 글
[프로그래머스] K번째수 Python 풀이 (0) | 2024.01.23 |
---|---|
[프로그래머스] 컨트롤 제트 Python 풀이 (0) | 2024.01.23 |
[프로그래머스] 큰 수 만들기 Python 풀이 (0) | 2024.01.21 |
[프로그래머스] 체육복 Python 풀이 (0) | 2024.01.21 |
[프로그래머스] 피보나치 수 Python 풀이 (0) | 2024.01.20 |