코딩테스트 연습 - 문자열 내 마음대로 정렬하기 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
입출력 예
string | n | return |
["sun", "bed", "car"] | 1 | ["car", "bed", "sun"] |
["abce", "abcd", "cdx"] | 2 | ["abcd", "abce", "cdx"] |
내 풀이
.
풀이 1
def solution(strings, n):
strings.sort()
return sorted(strings, key=lambda x: x[n])
-----------이건 먼소린지 모르겟어------------------
def solution(strings, n):
return sorted(strings, key=lambda x:(x[n],x))
sorted(iterabel, *, key=None, reverse=False)
iterable의 항목들로 새 정렬된 리스트를 돌려줍니다. key는 하나의 인자를 받는 함수를 지정하는데, iterable의 각 요소들로부터 비교 키를 추출하는데 사용됩니다. 기본값은 None입니다.(요소를 직접 비교합니다.)
strings의 요소 하나 하나를 람다 함수를 적용시켜 각 요소들의 n번째 인덱스를 비교하여 정렬한 결과를 반환한다. key에 lambda 함수 대신 strings[n]을 넣어봤는데, TypeError가 발생한다. 아무래도 함수를 넣어야 하는 모양이다.
풀이 2 (n번째 글자를 단어 제일 앞에 붙여서 정렬 후 제거)
def solution(strings, n):
new =[]
answer =[]
for i in range(len(strings)):
a = strings[i][n]
b = a+strings[i]
new.append(b)
new.sort()
for i in range(len(new)):
c = new[i][1:]
answer.append(c)
return answer
코딩테스트 연습 - 두 개 뽑아서 더하기 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
입출력 예
numbers | result |
[2,1,3,4,1] | [2,3,4,5,6,7] |
[5,0,2,7] | [2,5,7,9,12] |
내 풀이
def solution(numbers):
array=[]
for i in range(1, len(numbers)):
for j in range(0,len(numbers)-1):
array.append(numbers[i]+numbers[j])
a=set(array)
b=sorted(a)
b=list(b)
return b
풀이
def solution(numbers):
array = []
for i in range(len(numbers)):
j = i + 1
for j in range(len(numbers)):
if j > i :
array.append(numbers[i] + numbers[j])
answer = sorted(set(array))
return answer
코딩테스트 연습 - 3진법 뒤집기 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
입출력 예
n | result |
45 | 7 |
125 | 229 |
내 풀이 (오답)
def solution(n):
array=''
result=0
n=45
while n>3:
rest=n%3
n=n//3
array+=str(rest)
j=0
while j<len(array):
for i in array:
result+=int(i)*3**j
j+=1
return result
풀이
def solution(n):
answer = ''
while(n >= 1):
rest = n % 3
n = n // 3
answer += str(rest)
return int(answer, 3)
print(solution(45))
★ int(n, base)를 통해 base진법을 10진법으로 변환
'코딩테스트 > programmers (python)' 카테고리의 다른 글
python/ Lv.1 K번째 수 (0) | 2023.02.04 |
---|---|
python/ Lv.1 콜라문제, 소수찾기, 숫자 문자열과 영단어 (0) | 2023.02.03 |
python/ Lv.1 수박수박수박수? (0) | 2023.01.21 |
python/ Lv.0 저주의 숫자 3 (0) | 2023.01.21 |
python/ Lv.0 캐릭터의 좌표, 로그인 성공?, 등수 매기기 (0) | 2023.01.20 |