๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm/BOJ

[BOJ] ๋‹จ์–ด์ •๋ ฌ (#1181)

 

๋ฌธ์ œ 

์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ N๊ฐœ์˜ ๋‹จ์–ด๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

  1. ๊ธธ์ด๊ฐ€ ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ
  2. ๊ธธ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ์‚ฌ์ „ ์ˆœ์œผ๋กœ

 

์ž…๋ ฅ 

์ฒซ์งธ ์ค„์— ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 20,000) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๊ฐ€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 50์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

 
 
์ถœ๋ ฅ 
 
์กฐ๊ฑด์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜์—ฌ ๋‹จ์–ด๋“ค์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, ๊ฐ™์€ ๋‹จ์–ด๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์ž…๋ ฅ๋œ ๊ฒฝ์šฐ์—๋Š” ํ•œ ๋ฒˆ์”ฉ๋งŒ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๋‚˜์˜ ์ฝ”๋“œ 
N = int(input())
array = []
new_array = []
for _ in range(N):
  word = input()
  array.append(word) # word๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” array ๋งŒ๋“ค๊ธฐ
  array = list(set(array)) # ์ค‘๋ณต ์›์†Œ ์ œ๊ฑฐ
array.sort() # ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋กœ ๋ฐฐ์—ด

# ๋ฌธ์ž์—ด ๊ธธ์ด ์ˆœ์œผ๋กœ ๋ฐฐ์—ด
for _ in range(len(array)):
  for i in range(len(array)-1):
    if len(array[i]) > len(array[i+1]):
      array[i],array[i+1] = array[i+1],array[i]

# ๋ฐฐ์—ด ๋‚ด ์›์†Œ ์ถœ๋ ฅ 
for i in array:
  print(i)
๋ถ„์„ > ์ฒ˜์Œ์—๋Š” ๋ฌธ์ œ์— ๋‚˜์˜จ ์ˆœ์„œ๋Œ€๋กœ ๋ฌธ์ž์—ด ๊ธธ์ด๋Œ€๋กœ ๋ฐฐ์—ด์„ ํ•˜๊ณ  ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋กœ ๋‹ค์‹œ ๋ฐฐ์—ด์„ ํ•˜๋ ค๋‹ˆ๊นŒ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋กœ ์–ด๋–ป๊ฒŒ ๋‹ค์‹œ ๋ฐฐ์—ด์„ ํ•ด์•ผ ํ• ์ง€ ๋‚œ๊ฐํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ตฌ๊ธ€๋ง์œผ๋กœ ๋‹ค๋ฅธ ์ ‘๊ทผ๋ฒ•์„ ์ฐพ์•„๋ดค๋Š”๋ฐ, ๊ทธ๋ƒฅ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋กœ ๋ฐฐ์—ด์„ ํ•œ ๋‹ค์Œ, ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ์ˆœ์œผ๋กœ ๋ฐฐ์—ดํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ ‘๊ทผ๋ฒ•์œผ๋กœ ํ‘ผ ๊ฒƒ์ด ์ด ์ฝ”๋“œ์ธ๋ฐ, ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋–ด๋‹ค. 

 

 

ํ•ด์„ค ์ฝ”๋“œ
import sys

N = int(sys.stdin.readline())
array = []
for _ in range(N):
  array.append(sys.stdin.readline().strip()) # word๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” array ๋งŒ๋“ค๊ธฐ
array = list(set(array)) # ์ค‘๋ณต ์›์†Œ ์ œ๊ฑฐ
array.sort() # ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋กœ ๋ฐฐ์—ด

# ๋ฌธ์ž์—ด ๊ธธ์ด ์ˆœ์œผ๋กœ ๋ฐฐ์—ด
array.sort(key = len)

# ๋ฐฐ์—ด ๋‚ด ์›์†Œ ์ถœ๋ ฅ 
for i in array:
  print(i)
๋ถ„์„ > ์ด ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์ฃผ๋Š” ํ˜๋ช…์ ์ธ ์ฝ”๋“œ๋ฅผ ์•Œ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ array.sort(key = len) ์ด๋‹ค. ๋‚˜๋Š” ๊ธธ์ด ์ˆœ์œผ๋กœ ๋น„๊ต๋ฅผ ํ•  ๋•Œ์— ๋ฌด์กฐ๊ฑด ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ •๋ ฌํ•ด์ฃผ์—ˆ๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊นœ์ง ๋†€๋ž์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  sys.stdin.readlin()์˜ ๊ฒฝ์šฐ ์ถœ๋ ฅ ํ•  ๋•Œ ์ค„๋ฐ”๊ฟˆ์„ ํฌํ•จํ•ด์„œ ์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, strip()์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ๋‹ค. ๋˜ ์ตœ์ข…์ ์œผ๋กœ ์„ธ๋กœ๋กœ ์ถœ๋ ฅํ•  ๋•Œ์—๋Š” ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ•ด๋‹น ์›์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

 

1181๋ฒˆ: ๋‹จ์–ด ์ •๋ ฌ

์ฒซ์งธ ์ค„์— ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 20,000) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๊ฐ€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 50์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

www.acmicpc.net