본문 바로가기

코딩테스트 준비/프로그래머스

[프로그래머스] 가장 큰 수

반응형

 

 

 

안녕하세요~

27년차 진로탐색꾼 조녁입니다!

1일 1코테 22일차! 고득점 Kit 에서 정렬 테마 문제 풀어보았습니다.

 

2단계라 그런지 확실히 생각할 거리가 좀 있었습니다. 

어제랑 그제는 전에 푼 문제들 복습하고 개인 프로젝트 진행하느라 문제를 못풀어봤네요 .. 

 

 

· 문제명 : 가장 큰 수

· 사용 언어 : Python3

· 난이도 : Level2

· 문제 설명 

programmers.co.kr/learn/courses/30/lessons/42746

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr

 

정답 코드

 


def solution(numbers): 
    #int list -> str list로 변환
    num = list(map(str, numbers)) 
    
    #x*3을 통해 3자리수로 맞춘 후 맨 앞 index로 내림차순 정렬
    num.sort(key = lambda x : x*3, reverse = True) 
    
    # int로 변환했다 str으로 변환하는 이유 : "000"을 0으로 처리
    return str(int(''.join(num)))
    

 

요즘 집중력이 떨어져서 시간 정해놓고 푸는데, 또 못풀어서 다른 분의 풀이 도움을 받았다 .. 그래도 배우는게 있다!! 

 

배운점 정리 

 

1. map() :  map은 리스트의 요소를 지정된 함수로 처리해주는 함수 (반복가능한 객체 eg- 튜플, range 등)

 

<eg : 리스트 int로 바꾸기>

 

>>> a = [1.2, 2.5, 3.7, 4.6]
>>> a = list(map(int, a))
>>> a
[1, 2, 3, 4]

 

 

2.lambda x : 람다 표현식은 함수를 간편하게 작성할 수 있어서 다른 함수의 인수로 넣을 때 주로 사용한다. 

 

람다 표현식 원리

 

 

 

3.key : 정렬할 때 기준을 잡아준다. 기본값은 오름차순이다.

 

<eg : 문자열 2번째 글씨 기준으로 정렬하기>

 

>>> str_list = ['좋은하루','good_morning','굿모닝','niceday']
>>> print(sorted(str_list, key=len))  # 함수
['굿모닝', '좋은하루', 'niceday', 'good_morning']

>>> print(sorted(str_list, key=lambda x : x[1]))  # 람다
['niceday', 'good_morning', '굿모닝', '좋은하루']

 

https://link.coupang.com/a/rGILU

 

[한빛미디어]이것이 취업을 위한 코딩 테스트다 with 파이썬

COUPANG

www.coupang.com

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형