[백준] 정렬 2

백준 11650 좌표 정렬하기

문제

풀이

N = int(input())
arr = [0] * N

for r in range(N):
    i, j = map(int, input().split())
    arr[r] = [i, j]
arr = sorted(arr)

for k in range(len(arr)):
    print(arr[k][0], arr[k][1])

sorted란 함수 자체가 자동으로 정렬해주기 때문에, 식을 더 만들지 않아도 출력이 잘됬다.

갑자기 궁금해졌다.

print 함수와 sys 를 이용한 함수를 쓸때 차이가 어느정도가 날까?

import sys

N = int(sys.stdin.readline())
arr = [0] * N

for r in range(N):
    i, j = map(int, sys.stdin.readline().split())
    arr[r] = [i, j]
arr = sorted(arr)

for k in arr:
    print(k[0], k[1])

바꾼게 sys 말고도 for문을 바꾸긴 했지만 시간차이가 꽤 많이 나더라

중간에 한번은 잘못 입력해서 런타임 에러가 뜸 ㅋㅋㅋㅋ

입력, 프린트시에 메모리에 관한 차이도 있을거라 생각했는데, 그건 아닌가보다

아무튼 시간적인 차이가 많이 나는구나


백준 11651 좌표 정렬하기 2

문제

풀이

import sys

N = int(input())
arr = [0] * N

for r in range(N):
    i, j = list(map(int, sys.stdin.readline().split()))
    arr[r] = [j, i]
for k in sorted(arr):
    k[0], k[1] = k[1], k[0]
    print(k[0], k[1])
import sys

N = int(input())
arr = [0] * N

for r in range(N):
    i, j = list(map(int, sys.stdin.readline().split()))
    arr[r] = [j, i]
for k in sorted(arr):
    print(k[1], k[0])

바보같이 일을 두번했다 ㅋㅋㅋㅋㅋ

그래서 다시 바꿔서 진행했다.

arr[r] = [j, i]

내가 한 방식으로 넣어주어도 되지만,

lambda 함수를 이용해서 넣어주어도 된다.

N = int(input())
arr = [0] * N
for r in range(N):
    i, j = list(map(int, input().split()))
    arr[r] = [j, i]
arr.sort(key=lambda x: (x[0], x[1]))
print(arr)

>>[[-3, 3], [-2, 2], [-1, 1]]

백준 1181 단어 정렬

문제

풀이

import sys

N = int(sys.stdin.readline())
arr = [0] * N
num = []

for r in range(N):
    word = sys.stdin.readline()
    arr[r] = word
arr = set(arr)

for i in arr:
    num.append((len(i), i))
num.sort()
for j in num:
    print(j[1].strip("\n"))

이 문제에서 유독 실수가 많았음.

중간에 파이썬으로 안바꾸고 제출도 했습니다 😁

틀렷던 코드들을 보면

for i in range(N):
	word = sys.stdin.readline()
	arr[r] = word
	arr = set(arr)

완전 실수 투성이여

for i in arr:
	num.append((len(i), i))
	num.sort

이런식으로 for문 밖에서 정렬하고, 중복검사를 해야하는데

안쪽에서 해버려서 틀린경우, 오타(append를 appned 와 appnd)로

코드에디터에서 실행해보고 충분히 알아 차릴수 있는 실수 였는데

확인조차 안하고 제출해버렷다.

반성하자 실수 할 수도 있지 그런데, 확인도 안해보고 실수 하는건

그냥 내가 귀찮아서 안했다는거 말고는 없다.


백준 10814 나이순 정렬

문제

풀이

import sys

N = int(input())
arr = [0] * N

for r in range(len(arr)):
    i, j = map(str, sys.stdin.readline().split())
    arr[r] = [i, j]
arr.sort(key=lambda x: int(x[0]))
for age, name in arr:
    print(age, name)

정렬 파트에 있는 문제들은 다 비슷비슷한 문제여서 푸는데 좀 지루햇다..

다 풀어보고 싶어서 풀긴 했지만, 지루했다
아니지 2문제 못풀었다.
최빈값 구하는 문제랑, 메모리 줄이는 문제( 수 정렬하기 3)
최반값이라는 개념자체를 몰라서 찾아봤지만, 여전히 어떤식으로 구해야할지
감이 잘 안잡힌다.

좋은 웹페이지 즐겨찾기