정렬 문제 풀이
백준 - 10825번 국영수
lambda를 활용하여 쉽게 풀 수 있었다.
lambda 매개변수 : 표현식
score.sort(key = lambda x : (-x[1],x[2],-x[3],x[0]))
-> -가 붙으면 내림차순 정렬한다.
=> 문제 조건에 맞춰 코드를 작성했다.
x[1]을 내림차순 정렬하는데 같은 값이 나올 경우 x[2]를 오름차순 정렬하고 앞에 두 값이 같을 경우 x[3]를 기준으로 내림차순 정렬하고 국영수 모든 값이 같을 경우 x[0]값을 기준으로 오름차순 정렬한다.
# 국영수
import sys
n = int(sys.stdin.readline().strip())
score = []
for _ in range(n):
tmp = sys.stdin.readline().split()
tmp[1] = int(tmp[1])
tmp[2] = int(tmp[2])
tmp[3] = int(tmp[3])
score.append(tmp)
score.sort(key = lambda x: (-x[1],x[2],-x[3],x[0]))
for i in range(n):
print(score[i][0])
백준 - 18310번 안테나
몇 가지 경우를 그려보면 안테나를 중앙에 설치해야 한다는 것을 알 수 있다.
# 안테나
import sys
n = int(sys.stdin.readline().strip())
house = list(map(int,sys.stdin.readline().split()))
house.sort()
if n % 2 == 0:
print(house[n//2-1])
else:
print(house[n//2])
백준 - 1715번 카드 정렬하기
작은 값 2개를 계속 더해주는 과정이기 때문에 우선순위 큐를 활용하여 문제를 해결하였다.
우선순위 큐
from queue import PriorityQueue
q = PriorityQueue()
입력 - q.put() 우선순위를 추가적으로 지정해줄 수 있음
출력 - q.get() 최솟값 반환
큐 사이즈 - q.qsize()
# 카드 정렬하기
import sys
from queue import PriorityQueue
q = PriorityQueue()
n = int(sys.stdin.readline().strip())
for _ in range(n):
q.put(int(sys.stdin.readline().strip()))
result = 0
while q.qsize() > 1:
tmp1 = q.get()
tmp2 = q.get()
tmp = tmp1 + tmp2
result += tmp
q.put(tmp)
print(result)
pypy가 더 빠르다고 알고 있어서 시간초과 방지를 위해 pypy로 제출하였는데
같은 코드임에도 불구하고 pypy는 시간초과가 발생했고 python은 시간초과가 발생하지 않았다.
이유가 뭔지 궁금하다...
프로그래머스 - 2019 KAKAO BLIND RECRUITMENT 실패율
문제에서 주어진 공식대로 실패율을 계산한 뒤 해당 값을 내림차순으로 출력하면 되는 간단한 문제였다.
런타임에러
def solution(N,stages):
result = []
stage = [stages.count(i+1) for i in range(N)]
tmp = 0
player = len(stages)
for i in range(N):
result.append((i+1,stage[i]/(player-tmp)))
tmp += stage[i]
result.sort(key = lambda x : -x[1])
answer = [x[0] for x in result]
return answer
성공
def solution(N,stages):
result = []
stage = [stages.count(i+1) for i in range(N)]
tmp = 0
player = len(stages)
for i in range(N):
print(i)
divide = player-tmp
if divide != 0:
result.append((i+1,stage[i]/(player-tmp)))
else:
result.append((i+1,0))
tmp += stage[i]
result.sort(key = lambda x : -x[1])
answer = [x[0] for x in result]
print(result)
return answer
division by zero로 인해 런타임 에러가 발생하는 부분을 수정하였다.
Author And Source
이 문제에 관하여(정렬 문제 풀이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yerimstar/정렬-문제-풀이저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)