본문 바로가기

CS Study/algorithm

정렬 알고리즘 (문제 풀이)

1. 단어 정렬 (백준 1181번)

https://www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

 

참고 답안) 

n=int(input())
array=[]

for i in range(n):
        array.append(input())

set_list=set(array)
new_array=list(set_list)
new_array.sort()
new_array.sort(key=len)

for i in range(len(new_array)):
        print(new_array[i])

 

2. 소트인사이드 (백준 1427번)

https://www.acmicpc.net/problem/1427

 

1427번: 소트인사이드

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

직접 작성한 코드)

string=input()
list_string=list(string)
list_string.sort(reverse=True)
result=''.join(s for s in list_string)
print(result)

 

3. ATM (백준 11399번)

https://www.acmicpc.net/problem/11399

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

 

직접 작성한 코드)

n=int(input())
array=list(map(int,input().split()))
array.sort()
result=0
count=n

for i in range(n):
    result+=array[i]*count
    count-=1
    
print(result)

 

4. 좌표 정렬하기 (백준 11650번)

https://www.acmicpc.net/problem/11650

 

11650번: 좌표 정렬하기

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

 

직접 작성한 코드)

n=int(input())
array=[]

for i in range(n):
    array.append(list(map(int, input().split())))

array.sort(key=lambda array:(array[0],array[1]))

for i in range(n):
    print(array[i][0] ,array[i][1])

'CS Study > algorithm' 카테고리의 다른 글

기타 문제풀이  (0) 2022.07.22
DFS & BFS 문제 풀이  (0) 2022.07.19
그리디 알고리즘 (문제 풀이)  (0) 2022.07.12
최단 경로 알고리즘  (0) 2022.07.12
다이나믹 프로그래밍  (0) 2022.07.11