좌표 정렬하기 성공분류
시간 제한 |
메모리 제한 |
제출 |
정답 |
맞은 사람 |
정답 비율 |
1 초 |
256 MB |
34128 |
16370 |
12521 |
48.760% |
https://www.acmicpc.net/problem/11650
문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
알고리즘 분류
백준 알고리즘 # 11650번 : 좌표 정렬하기
import sys
input = sys.stdin.readline
n = int(input())
array = []
for i in range(n):
[a, b] = map(int, input().split())
array.append([a, b])
s_array = sorted(array)
for i in range(n):
print(s_array[i][0], s_array[i][1])
풀이
리스트 안에 있는 리스트를 인덱싱 할 줄만 알면 쉽게 풀 수 있는 문제!
시간 초과가 뜨므로 sys.stdin.readline으로 input을 초기화시켜서 입력받고
array를 리스트로 설정해서 for문으로 n번 만큼 [a, b]를 리스트 안에 추가(append)했습니다.
이것을 출력해보면 [[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]]이 나오게 되고
sorted 함수를 통해 정렬만 해주면 순서대로 정렬이 됩니다.
key point
마지막으로 n만큼 for문을 반복하며 정렬해준 s_array에 들어있는 리스트를 [i][0], [i][1] 씩 출력해주면
i = 0~4가 쭉 돌아가며 리스트 안에 들어있는 리스트를 인덱싱해오면서 문제 풀이 끄-읏!!👏🏻
(이해가 안되시는 분들은 위에 사진 첨부해놓은 '삼중 리스트에서 인덱싱하기'를 참고해주세요)
자세한 코드가 궁금하신 분들은 아래 GitHub 코드를 참고해주세요🙏🏻
최종 소스코드
'코딩테스트 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 | 2920 : 음계 (Python / 파이썬) (0) | 2020.12.17 |
---|---|
백준 알고리즘 | 1181 : 단어 정렬 (Python / 파이썬) (2) | 2020.12.16 |
백준 알고리즘 | 10039 : 평균 점수 (Python / 파이썬) (0) | 2020.12.14 |
백준 알고리즘 | 13458 : 시험 감독 (Python / 파이썬) (0) | 2020.12.13 |
백준 알고리즘 | 2441 : 별 찍기 - 4 (Python / 파이썬) (2) | 2020.12.12 |
댓글