-
[프로그래머스] Python - 가장 큰 수메모/알고리즘 2022. 2. 3. 00:33
프로그래머스의 정렬 레벨2 문제다.
사전식 정렬을 이용하는데 반례가 존재한다.
"30" ,"3" # 답 "330" # 반례 "303"
위와 같은 두 수를 문제의 의도대로라면 큰 수가 앞에 와야하는데 사전식 정렬을 이용하면 "30"이 "3"보다 앞에 오게 된다.
이 문제 해결을 위해 각 값에 3을 곱했다. 3을 곱한 이유는 천의 자리의 조건을 맞추기 위해서다.
"3" -> "333" "30" -> "303030"
문자열로 변환한 수에 3을 곱하면 위와 같이 변경된다.
이렇게 변경해서 "333"이 "303030"보다 사전순으로 큰 문자가 되어 앞에 오게된다.
여기서 하나의 반례가 더 존재한다.
#원본 [0,0,0] #결과 "000"
위와 같이 0으로만 이루어진 리스트가 주어지면 결과 값이 "0"이 나와야 함에도 "000"이 출력된다.
따라서 0만으로 이루어진 결과는 0으로 변경되도록 하였다.
'메모 > 알고리즘' 카테고리의 다른 글
[프로그래머스] Python - 네트워크 (2) 2022.02.14 [프로그래머스] Python - 타겟 넘버 (0) 2022.02.14 [프로그래머스] Python - 다리를 지나는 트럭 (0) 2022.02.03 [프로그래머스] Python - 프린터 (0) 2022.02.03 [프로그래머스] Python - 주식가격 (0) 2022.02.02