전체 글 267

[Python] 124 나라의 숫자

def solution(n): answer = '' number = "124" while n>0 : n -= 1 answer = number[n%3] + answer n = n // 3 return answer 1. 각 index를 1을 빼준 후, 3으로 나눈 나머지를 '124'의 index로 가진다. ex) 30번째 -> 29 -> 124[2] = 4 ➡︎ 4 2. 위에서 나눈 몫에 대해 1을 빼고 3으로 다시 나눈 나머지를 '124'의 index로 가지며 앞의 값의 앞쪽에 붙여준다. ex) 9 -> 8 -> 124[2] = 4 ➡︎ 44 3. 2번을 반복한다. ex) 2 -> 1 -> 124[1] = 2 ➡︎ 244 ✔︎ 1을 빼는 이유 : 인덱스는 0부터 시작하기 때문 1 빼주지 않으면 10진법에서..

[Python] 자연수 뒤집어 배열로 만들기

def solution(n): answer=[] a = str(n) for i in a : answer.append(int(i)) answer.reverse() return answer 처음엔 이렇게 풀었는데 더 간단하게 풀 수 있을 것이라 생각해서 나온 풀이 def solution(n): return list(map(int, reversed(str(n)))) 내장함수인 map과 reversed를 써주면 더 간단하게 해결 가능하다 ✔︎ map : 함수와 반복 가능한 자료형을 입력으로 받는다 ✔︎ reversed : 리스트를 뒤집는다. ++ 리스트(문자열)를 뒤집는 또 다른 방법 : 확장 슬라이싱 -> list[::-1] 을 해주면 뒤집힌다.

[Python] 완주하지 못한 선수

def solution(participant, completion): participant.sort() completion.sort() for i in range(len(completion)) : if participant[i] != completion[i] : return participant[i] return participant[-1] 1. 먼저 participant, completion을 정렬한뒤, 2. for 문으로 두 리스트의 인덱스 0부터 시작하여 값들을 비교해 나간다. 3. if문을 활용해 두 값이 같지 않으면 participant[i]를 str형태로 반환해준다. 4. 위의 if문에 걸리지 않는다면, 완주하지 못한 선수가 participant 리스트의 마지막에 있는 경우이므로 이를 반환해준..

[Python] 문자열 내 마음대로 정렬하기

def solution(strings, n): answer = sorted(sorted(strings), key = lambda x : x[n]) return answer 처음에 for문 돌리다가 더 간단하게 할 방법 없을까 머리 쥐어짠 문제 풀이 1. 먼저 strings를 sorted로 해주어 정렬해준뒤 2. 람다 식을 이용해 n 번째 문자로 다시 정렬해준다. 왜 sorted를 두 번 해줄까? 문자열 2번째 기준으로 정렬되었으나, 2번째 문자열이 같을 경우, 사전 순으로 정렬되어야 하는데 그것이 적용 되어 있지 않다. (abce와 abcd 중 사전적으로는 abcd가 앞) 따라서 sorted를 한 번 더 해준다.

[Python] 나누어 떨어지는 숫자 배열

def solution(arr, divisor): answer = [] for i in arr : if (i % divisor) == 0 : answer.append(i) if answer == [] : answer.append(-1) return sorted(answer) arr에서 하나씩 받아와 divisor로 나누어 떨어지면 answer 리스트에 추가해주는 형식. 그러나 answer이 비어있다면 -1을 추가해 반환하는 형식이다. 다른 분들의 풀이 ! def solution(arr, divisor): return sorted([n for n in arr if n%divisor == 0]) or [-1] return에서 or을 사용할 수 있다 ! ! 앞의 식이 거짓이면 or 뒤의 식을 반환한다.([-1..