## 문제
문제에서 주어진 민식어 알파벳 순서대로 정렬해서 출력하기

민식어 알파벳 단어를 영어로 바꾸되, 변환 과정중에 ng를 먼저 다른걸로 바꿔주자, 영어로 바꾼 뒤 정렬전에는 뒤에 인덱스를 붙여서 정렬 결과를 출력할수 있도록 한다.


## code
import sys
input = sys.stdin.readlines
l = list(map(lambda x : x.rstrip().replace('\x1a',''),input()[1:]))

# 주어진 문자열을 다시 알파벳 형태로 바꾼 뒤에 정렬하자
key = 'a b k d e g h i l m n ng o p r s t u w y'.split(' ')
value = [chr(i) for i in range(97,97+21)]
# 민식어는 알파벳이 20개니까 value에 a부터 20개만 들어오도록 한다.
d = { key[i]:value[i] for i in range(20)}

# 딕셔너리를 이용해서 민식어를 알파벳으로 바꾸는데, ng를 먼저 다른걸로 바꾼다
# ng가 k로 바뀌면 알파벳으로 바꿀때 민식어 k로 착각해서 다시 바뀔수도 있으니
# 임시로 z로 바꾸고 다시 z를 l로 바꾸자
change_l = []
for tmp in l:
    tmp = tmp.replace('ng','z')

    tmp_replace = ''
    for tmp2 in tmp:
        if tmp2 == 'z':
            tmp_replace += 'z'
        else:
            tmp_replace += d[tmp2]
   
    tmp_replace = tmp_replace.replace('z','l')
    change_l += [tmp_replace]

# change_l을 정렬하기전에 원본의 index를 뒤에 저장하여 붙이고 정렬하자
num_l = []
for idx in range(len(change_l)):
    num_l += [[change_l[idx],idx]]

num_l.sort()

# 뒤에 붙였던 index로 정렬 결과를 출력한다
sorted_l = []
for tmp in num_l:
    sorted_l += [l[tmp[1]]]

for _ in sorted_l:
    print(_)


왜 골드5일까 난이도 붙은거에 비해서 쉬운것 같다.
내가 모르는 뭐가 있나



```
minsik = "abkdeghilmn*oprstuwy"
mindict = dict(zip(minsik, range(len(minsik))))
n = int(input())
word = [input() for i in range(n)]

def convert(w):
    w2 = w.replace("ng", "*")
    return [mindict[c] for c in w2]

word.sort(key = convert)
print(*word, sep='\n')
```
정렬할때 key를 내가 지정할수 있다