Today I Learned
written by 602
def solution(answers):
c = len(answers)
#수포자들 정답 리스트
ans_1 = [1, 2, 3, 4, 5] #5
ans_2 = [2, 1, 2, 3, 2, 4, 2, 5] #8
ans_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] #10
points = [0]*3 # 세 사람의 포인트 리스트 초기화
#한 문제씩 정답 비교하면서 포인트 +1
for i in range(c):
if answers[i] == ans_1[i%5]:
points[0] += 1
if answers[i] == ans_2[i%8]:
points[1] += 1
if answers[i] == ans_3[i%10]:
points[2] += 1
answer = [] #정답리스트
for idx, p in enumerate(points):
if p == max(points):
answer.append(idx+1)
return answer
def solution(numbers):
nums = list(map(str, numbers))
# nums = sorted(nums, key=lambda x: x[0], reverse=True) # 나의 풀이
nums = sorted(nums, key=lambda x: x*3, reverse=True) # 정답 풀이
return str(int(''.join(nums)))
3과 325가 있다고 했을 때,
3, 325 순으로 정렬이 되어야 하는데 나의 풀이, 정답풀이 모두 3,325 순으로 옳게 정렬이 된다.
3과 345가 있다고 했을 때,
345, 3으로 정렬이 되어야 하는데 나의 풀이는 3,345, 정답풀이는 345,3으로 정렬이 된다.
즉, 단순히 첫 숫자인 3이 같을 때, 나의 풀이는 뒷자리에 어떤 수가 오든 간에 자릿수가 더 작은 3을 앞으로 정렬한다. 하지만 위와 같은 문제는 첫자리가 같을 때 그 뒷자리 수들을 비교하는 것이 핵심이기 때문에 숫자를 3번씩 이어붙여서 자릿수끼리 이어서 비교할 수 있도록 해주어야 한다.