반응형

   문제

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


각 단어의 길이를 비교 후 길이가 같다면 사전순으로 정렬하면된다.

같은단어가 여러번일 경우 한번만 출력한다는 내용까지 잘읽고 출력하면된다.

알파벳 소문자로만 이루어진 단어이기때문에 비교조건에 특별히 char형으로 바꾸어 비교

할 필요는 없을거같다.

정렬방법은 단어가 많지않아 기본정렬로도 가능할거 같지만 병합정렬을 사용하였다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import sys
 
 
n=int(sys.stdin.readline())
 
word_list=[]
while (n>0):
    n-=1
    word_list.append(list(sys.stdin.readline().strip()))
 
#길이비교후
#길이같으면 글자비교
def mergeSort(li):
    if len(li)<=1:
        return li
    mid=len(li)//2
 
    left=li[:mid]
    right=li[mid:]
 
    left1=mergeSort(left)
    right1=mergeSort(right)
 
    return merge(left1,right1)
 
def merge(left,right):
 
    i=0#왼쪽
    j=0#오른쪽
 
    arr=[]
 
    while i<len(left) and j<len(right):
        if len(left[i])<len(right[j]):#한쪽이 더길면
            arr.append(left[i])
            i+=1
        elif len(left[i])==len(right[j]):#길이가 같을때
            for c in range(len(left[i])):#길이만큼 반복함
                if left[i][c]<right[j][c]:#각 단어비교
                    arr.append(left[i])
                    i+=1
                    break
                elif left[i][c]>right[j][c]:
                    arr.append(right[j])
                    j+=1
                    break
                if c == len(left[i])-1:  # 끝까지 비교해 두단어가 같다면
                    arr.append(left[i])
                    i += 1
                    break
 
        else:
            arr.append(right[j])
            j+=1
 
 
    while i<len(left):
        arr.append(left[i])
        i+=1
    while j<len(right):
        arr.append(right[j])
        j+=1
 
    return arr
 
 
 
word_list=mergeSort(word_list)
before=""#이전단어
for i in range(len(word_list)):
    if before==word_list[i]:#같은 단어라면 건너뛴다.
        continue
    for j in range(len(word_list[i])):
        print(word_list[i][j],end="")
    print()
    before=word_list[i]

cs



반응형

'알고리즘(python) > 정렬' 카테고리의 다른 글

[Python]위상정렬 백준 2252  (0) 2020.04.12
[Python]정렬 백준 10814  (0) 2020.01.02
[Python]정렬 백준 11651  (0) 2020.01.02
[Python]정렬 백준 11650  (0) 2020.01.01
[Python]정렬 백준 1427  (0) 2020.01.01
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기