좌표 정렬하기 2 성공분류
시간 제한 |
메모리 제한 |
제출 |
정답 |
맞은 사람 |
정답 비율 |
1 초 |
256 MB |
17496 |
11727 |
9965 |
69.356% |
https://www.acmicpc.net/problem/11651
문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
알고리즘 분류
백준 알고리즘 # 11651번 : 좌표 정렬하기 2
blog.naver.com/wook2124/222171813015
import sys
input = sys.stdin.readline
n = int(input())
array = []
for i in range(n):
x, y = map(int, input().split())
array.append([y, x])
s_array = sorted(array)
for y, x in s_array:
print(x, y)
"""
// # 두번째 출력방법
for i in range(n):
print(s_array[i][1], s_array[i][0])
"""
풀이
주요 풀이방법은 저번에 풀었던 '좌표 정렬하기'와 동일해요👍🏻
입력되는 시간을 줄이기 위해서 sys.stdin.readline()을 input으로 정의하고
n 변수에 테스트 케이스의 수를 입력받은 후 그만큼 for문으로 반복해줬어요.
array 변수를 만들어서 리스트를 미리 초기화해두고
그 안에서 x좌표, y좌표를 map으로 int 정수로 각각 입력받은 뒤
key point
전 문제와 다르게 예제 출력 값이 y를 기준으로 정렬되게끔 array 리스트에
[y, x] 순서로 append 했습니다🙌🏻
다음으로 sorted 함수를 이용해서 정렬하게 되면
array = [[-1, 1], [2, 1], [2, 2], [3, 3], [4, 0]]
위와 같이 array에 정렬된 숫자들이 나열됩니다.
이제 마지막으로 코드 풀이에 쓴 것과 같이 두 가지 방법 중 하나를 택해서 출력하면 문제풀이 끄-읏👏🏻
자세한 코드가 궁금하신 분들은 아래 GitHub 코드를 참고해주세요🙏🏻
최종 소스코드
'코딩테스트 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 | 1085 : 직사각형에서 탈출 (Python / 파이썬) (0) | 2020.12.22 |
---|---|
백준 알고리즘 | 1764 : 듣보잡 (Python / 파이썬) (0) | 2020.12.21 |
백준 알고리즘 | 2523 : 별 찍기 - 13 (Python / 파이썬) (0) | 2020.12.18 |
백준 알고리즘 | 2920 : 음계 (Python / 파이썬) (0) | 2020.12.17 |
백준 알고리즘 | 1181 : 단어 정렬 (Python / 파이썬) (2) | 2020.12.16 |
댓글