Data Scientist 옌

매일 발전하는 IT문제해결사

Programing 프로그래밍/코딩테스트 문제풀이

[백준] 13단계: 정렬

옌炎 2023. 7. 4. 10:54
728x90

※ 1~5번은 이전에 풀었던 문제라 생략합니다.

6. [1427] 소트인사이드

배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.

num = str(input())
num_list = []
for i in num:
    num_list.append(i)
num_list = sorted(num_list, reverse=True)
print(''.join(num_list))

7. [11650] 좌표 정렬하기

2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

N = int(input())
num_list = []
for _ in range(N):
    num_list.append(list(map(int, input().split())))
for i in sorted(num_list, key=lambda x: (x[0], x[1])):
    print(i[0], i[1])

8. [11651] 좌표 정렬하기 2

2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

N = int(input())
num_list = []
for _ in range(N):
    num_list.append(list(map(int, input().split())))
for i in sorted(num_list, key=lambda x: (x[1], x[0])):
    print(i[0], i[1])

9. [1181]  단어 정렬

알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.

  1. 길이가 짧은 것부터
  2. 길이가 같으면 사전 순으로

단, 중복된 단어는 하나만 남기고 제거해야 한다.

N = int(input())
char_list = []
for _ in range(N):
    char_list.append(str(input()))
char_list = list(set(char_list))
for i in sorted(sorted(char_list), key = lambda x : len(x)):
    print(i)

10. [10814] 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.

N = int(input())
judge_list = []
for _ in range(N):
    age, name = map(str, input().split())
    judge_list.append([int(age), name])
judge_list = sorted(judge_list, key = lambda x: x[0])
for i in judge_list:
    print(i[0], i[1])

11. [18870] 좌표 압축

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.

N = int(input())
num_list = list(map(int, input().split()))
sort_list = sorted(list(set(num_list)))
num_dict = {sort_list[i]: i for i in range(len(sort_list))}
for j in num_list:
    print(num_dict[j], end=' ')
728x90