νμμ΄λ μ΄λ² μμ΄ μνμμ νλ¦° λ¬Έμ λ₯Ό λ°νμΌλ‘ μμ΄ λ¨μ΄ μκΈ°λ₯Ό νλ €κ³ νλ€. κ·Έ κ³Όμ μμ ν¨μ¨μ μΌλ‘ μμ΄ λ¨μ΄λ₯Ό μΈμ°κΈ° μν΄ μμ΄ λ¨μ΄μ₯μ λ§λ€λ € νκ³ μλ€. νμμ΄κ° λ§λ€κ³ μ νλ λ¨μ΄μ₯μ λ¨μ΄ μμλ λ€μκ³Ό κ°μ μ°μ μμλ₯Ό μ°¨λ‘λ‘ μ μ©νμ¬ λ§λ€μ΄μ§λ€.
μμ£Ό λμ€λ λ¨μ΄μΌμλ‘ μμ λ°°μΉνλ€.
ν΄λΉ λ¨μ΄μ κΈΈμ΄κ° κΈΈμλ‘ μμ λ°°μΉνλ€.
μνλ²³ μ¬μ μμΌλ‘ μμ μλ λ¨μ΄μΌμλ‘ μμ λ°°μΉνλ€
λ³΄λ€ μ§§μ κΈΈμ΄μ λ¨μ΄μ κ²½μ° μ½λ κ²λ§μΌλ‘λ μΈμΈ μ μκΈ° λλ¬Έμ κΈΈμ΄κ°
μ΄μμΈ λ¨μ΄λ€λ§ μΈμ΄λ€κ³ νλ€. νμμ΄κ° κ΄΄λ‘μ΄ μλ¨μ΄ μκΈ°λ₯Ό ν¨μ¨μ μΌλ‘ ν μ μλλ‘ λ¨μ΄μ₯μ λ§λ€μ΄ μ£Όμ.
첫째 μ€μλ μμ΄ μ§λ¬Έμ λμ€λ λ¨μ΄μ κ°μ
κ³Ό μΈμΈ λ¨μ΄μ κΈΈμ΄ κΈ°μ€μ΄ λλ
μ΄ κ³΅λ°±μΌλ‘ ꡬλΆλμ΄ μ£Όμ΄μ§λ€. (
,
)
λμ§Έ μ€λΆν°
λ²μ§Έ μ€κΉμ§ μΈμΈ λ¨μ΄λ₯Ό μ
λ ₯λ°λλ€. μ΄λμ μ
λ ₯μ μνλ²³ μλ¬Έμλ‘λ§ μ£Όμ΄μ§λ©° λ¨μ΄μ κΈΈμ΄λ
μ λμ§ μλλ€.
λ¨μ΄μ₯μ λ¨μ΄κ° λ°λμ 1κ° μ΄μ μ‘΄μ¬νλ μ λ ₯λ§ μ£Όμ΄μ§λ€.
νμμ΄μ λ¨μ΄μ₯μ λ€μ΄ μλ λ¨μ΄λ₯Ό λ¨μ΄μ₯μ μμ μμΉν λ¨μ΄λΆν° ν μ€μ ν λ¨μ΄μ© μμλλ‘ μΆλ ₯νλ€.
μμ μ
λ ₯ 1
7 4
apple
ant
sand
apple
append
sand
sand
μμ μΆλ ₯ 1
sand
apple
append
μμ μ
λ ₯ 2
12 5
appearance
append
attendance
swim
swift
swift
swift
mouse
wallet
mouse
ice
age
μμ μΆλ ₯ 2
swift
mouse
appearance
attendance
append
wallet
λ€μκ³Ό κ°μ΄ μ¬μ©νλ©΄ μ μΆλ ₯μ μ’ λ λΉ λ₯΄κ² μ¬μ©ν μ μλ€.
C++μ μ¬μ©νκ³ μκ³ cin/coutμ μ¬μ©νκ³ μ νλ€λ©΄, cin.tie(NULL)κ³Ό sync_with_stdio(false)λ₯Ό λ λ€ μ μ©ν΄ μ£Όκ³ , endl λμ κ°νλ¬Έμ(\n)λ₯Ό μ°μ. λ¨, μ΄λ κ² νλ©΄ λ μ΄μ scanf/printf/puts/getchar/putchar λ± Cμ μ
μΆλ ₯ λ°©μμ μ¬μ©νλ©΄ μ λλ€.
Javaλ₯Ό μ¬μ©νκ³ μλ€λ©΄, Scannerμ System.out.println λμ BufferedReaderμ BufferedWriterλ₯Ό μ¬μ©ν μ μλ€. BufferedWriter.flushλ 맨 λ§μ§λ§μ ν λ²λ§ νλ©΄ λλ€.
Pythonμ μ¬μ©νκ³ μλ€λ©΄, input λμ sys.stdin.readlineμ μ¬μ©ν μ μλ€. λ¨, μ΄λλ 맨 λμ κ°νλ¬ΈμκΉμ§ κ°μ΄ μ
λ ₯λ°κΈ° λλ¬Έμ λ¬Έμμ΄μ μ μ₯νκ³ μΆμ κ²½μ° .rstrip()μ μΆκ°λ‘ ν΄ μ£Όλ κ²μ΄ μ’λ€. λ§μ§λ§μΌλ‘, Pypy3μ Python 3μ κ°μ λ¬Έλ²μ κ°μ§λ©΄μ μΌλ°μ μΌλ‘ λ λΉ λ₯΄κ² λμνλ€. μ°μ°λμ΄ λ§μ λ¬Έμ μμ Pythonμ μ¬μ©νκ³ μ νλ€λ©΄ Pypyλ‘ μ μΆνλ κ²μ κΆμ₯νλ€.
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n")
const [N, M] = input[0].split(" ").map(Number)
const wordDict = {}
const wordLengthFilter = input.filter((a, i) => {
if(i === 0) return false
if(a.length < M) return false
wordDict[a] = wordDict[a] ?? 0
wordDict[a] += 1
return true
})
const nonDuplicatedWord = [...new Set(wordLengthFilter)]
const sortedWord = nonDuplicatedWord.sort((a, b) => {
const [countA, countB] = [wordDict[a], wordDict[b]]
if(countA !== countB) return countB-countA
if(a.length !== b.length) return b.length-a.length
if(a > b) return 1
if(a === b) return 0
return -1
})
console.log(sortedWord.join("\n"))