๐Ÿ“š Study/Baekjoon

[Silver I] 1283 - ๋‹จ์ถ•ํ‚ค ์ง€์ •

์œฐ๊ฐฑ 2025. 5. 1. 12:32

๋ฌธ์ œ

ํ•œ๊ธ€ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฉ”๋‰ด์—๋Š” ์ด N๊ฐœ์˜ ์˜ต์…˜์ด ์žˆ๋‹ค. ๊ฐ ์˜ต์…˜๋“ค์€ ํ•œ ๊ฐœ ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋‹จ์–ด๋กœ ์˜ต์…˜์˜ ๊ธฐ๋Šฅ์„ ์„ค๋ช…ํ•˜์—ฌ ๋†“์•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์œ„์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๊ฐ ์˜ต์…˜์— ๋‹จ์ถ•ํ‚ค๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋Œ€ํ‘œ ์•ŒํŒŒ๋ฒณ์„ ์ง€์ •ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ๋‹จ์ถ•ํ‚ค๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฒ•์€ ์•„๋ž˜์˜ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

  1. ๋จผ์ € ํ•˜๋‚˜์˜ ์˜ต์…˜์— ๋Œ€ํ•ด ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ ์ˆœ์„œ๋กœ ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ์ด๋ฏธ ๋‹จ์ถ•ํ‚ค๋กœ ์ง€์ •๋˜์—ˆ๋Š”์ง€ ์‚ดํŽด๋ณธ๋‹ค. ๋งŒ์•ฝ ๋‹จ์ถ•ํ‚ค๋กœ ์•„์ง ์ง€์ •์ด ์•ˆ ๋˜์–ด์žˆ๋‹ค๋ฉด ๊ทธ ์•ŒํŒŒ๋ฒณ์„ ๋‹จ์ถ•ํ‚ค๋กœ ์ง€์ •ํ•œ๋‹ค.
  2. ๋งŒ์•ฝ ๋ชจ๋“  ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ์ด๋ฏธ ์ง€์ •์ด ๋˜์–ด์žˆ๋‹ค๋ฉด ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์•ŒํŒŒ๋ฒณ์„ ๋ณด๋ฉด์„œ ๋‹จ์ถ•ํ‚ค๋กœ ์ง€์ • ์•ˆ ๋œ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด ๋‹จ์ถ•ํ‚ค๋กœ ์ง€์ •ํ•œ๋‹ค.
  3. ์–ด๋– ํ•œ ๊ฒƒ๋„ ๋‹จ์ถ•ํ‚ค๋กœ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๊ทธ๋ƒฅ ๋†”๋‘๋ฉฐ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„์น˜ ์•Š๋Š”๋‹ค.
  4. ์œ„์˜ ๊ทœ์น™์„ ์ฒซ ๋ฒˆ์งธ ์˜ต์…˜๋ถ€ํ„ฐ N๋ฒˆ์งธ ์˜ต์…˜๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ์ ์šฉํ•œ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์˜ต์…˜์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 30)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N+1๋ฒˆ์งธ ์ค„๊นŒ์ง€ ๊ฐ ์ค„์— ์˜ต์…˜์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋˜๋Š”๋ฐ ํ•˜๋‚˜์˜ ์˜ต์…˜์€ 5๊ฐœ ์ดํ•˜์˜ ๋‹จ์–ด๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ๊ฐ ๋‹จ์–ด ์—ญ์‹œ 10๊ฐœ ์ดํ•˜์˜ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. ๋‹จ์–ด๋Š” ๊ณต๋ฐฑ ํ•œ ์นธ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด์ ธ ์žˆ๋‹ค.

์ถœ๋ ฅ

N๊ฐœ์˜ ์ค„์— ๊ฐ ์˜ต์…˜์„ ์ถœ๋ ฅํ•˜๋Š”๋ฐ ๋‹จ์ถ•ํ‚ค๋กœ ์ง€์ •๋œ ์•ŒํŒŒ๋ฒณ์€ ์ขŒ์šฐ์— [] ๊ด„ํ˜ธ๋ฅผ ์”Œ์›Œ์„œ ํ‘œํ˜„ํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1 ๋ณต์‚ฌ

5
New
Open
Save
Save As
Save All

์˜ˆ์ œ ์ถœ๋ ฅ 1 ๋ณต์‚ฌ

[N]ew
[O]pen
[S]ave
Save [A]s
Sa[v]e All

์˜ˆ์ œ ์ž…๋ ฅ 2 ๋ณต์‚ฌ

8
New window
New file
Copy
Undo
Format
Font
Cut
Paste

์˜ˆ์ œ ์ถœ๋ ฅ 2 ๋ณต์‚ฌ

[N]ew window
New [f]ile
[C]opy
[U]ndo
F[o]rmat
Fon[t]
Cut
[P]aste

# ํ’€์ด ๋ฐฉ๋ฒ•

์ƒˆ๋กœ์šด ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆด ๊ฑด ์—†์—ˆ๊ณ  ๊ทธ๋ƒฅ ํ•˜๋‚˜์”ฉ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ

flag๋กœ t/f ์ด๋Ÿฐ๊ฑฐ ์„ค์ •ํ•˜๋Š”๊ฒŒ ์‚ด์ง ํ—ท๊ฐˆ๋ ธ์Œ

input_list ์ž์ฒด๋ฅผ ๋ฐ”๊ฟ€ ์ƒ๊ฐ์„ ์‹ค์ œ๋กœ๋Š” ๋ชปํ•˜๊ณ  ์ƒˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ž…๋ ฅ ๋ฐ›์„๊นŒ ํ–ˆ์—ˆ๋Š”๋ฐ ๋‚จ์˜ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค.


# ์ฝ”๋“œ1 - good

์ฝ”๋“œ2๋กœ ์ฒ˜์Œ ํ†ต๊ณผํ–ˆ์ง€๋งŒ, enumerate ํ•จ์ˆ˜์— ์ต์ˆ™ํ•ด์ง„ ์ดํ›„๋กœ๋Š” ๋” ๋‚˜์•„์ง„ ํ’€์ด๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์‚ฌ์‹ค์€ ๋‹จ์–ด๋ณ„๋กœ ์ €์žฅํ•˜๋Š”๊ฒŒ ๋” ๋ง์ด ๋˜๋‹ˆ๊นŒ (sys.stdin.readline.split())

# 2025-05-02 14:44-15:13
import sys
sys.stdin = open("input.txt","r")

n = int(sys.stdin.readline().strip())
input_list = [list(sys.stdin.readline().split()) for _ in range(n)]
key_list = []

def return_key(words):
    #  ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ ์ˆœ์„œ๋กœ ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ์ด๋ฏธ ๋‹จ์ถ•ํ‚ค๋กœ ์ง€์ •๋˜์—ˆ๋Š”์ง€
    for (i,word) in enumerate(words):
        if word[0].upper() not in key_list:
            key_list.append(word[0].upper())
            word = '[' + word[0] + ']' + word[1:]
            words[i] = word
            return

    # ์–ด๋– ํ•œ ๊ฒƒ๋„ ๋‹จ์ถ•ํ‚ค๋กœ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๊ทธ๋ƒฅ ๋†”๋‘๋ฉฐ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„์น˜ ์•Š๋Š”๋‹ค.
    for (i, word) in enumerate(words):
        for (j, w) in enumerate(word):
            if w.upper() not in key_list:
                key_list.append(w.upper())
                word = word[:j] + '[' + word[j] + ']' + word[j+1:]
                words[i] = word
                return

for i in range(n):
    return_key(input_list[i])
    print(*input_list[i],sep=' ')

 

 

# ์ฝ”๋“œ2 -- ์ฐธ๊ณ 

์ฒ˜์Œ์—๋Š” sys.stdin.readline().split()์œผ๋กœ ํ•ด์„œ ๋‹จ์–ด๋ณ„๋กœ ์ž…๋ ฅ์„ ๋ฐ›์•˜์—ˆ๋Š”๋ฐ

for๋ฌธ์„ ์ด์ค‘์œผ๋กœ ๋„๋Š” ๊ณผ์ •์ด ์‚ด์ง ํ—ท๊ฐˆ๋ ธ๋‹ค. strip()๋กœ ์ž…๋ ฅ ๋ฐ›์œผ๋‹ˆ ๋” ์ฝ”๋“œ๊ฐ€ ์‰ฝ๊ฒŒ ํ’€๋ ธ๋˜ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•œ๊ฑธ

์ฒ˜์Œ์— words[i] != ' ' ์ด ๋ถ€๋ถ„์„ ๊นŒ๋จน์–ด์„œ ๋‹ต์ด ํ‹€๋ ธ์—ˆ์Œ

๋ฐ˜๋ก€)
์ž…๋ ฅ
2
aa aa
aa aa

์ •๋‹ต
[a]a aa
aa aa

๋‚˜์˜ ๋‹ต
[a]a aa
aa[ ]aa
# 2025-05-02 14:44-15:13
import sys
sys.stdin = open("input.txt","r")

n = int(sys.stdin.readline().strip())
input_list = [list(sys.stdin.readline().strip()) for _ in range(n)]
key_list = []

def return_key(words):
    #  ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ ์ˆœ์„œ๋กœ ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ์ด๋ฏธ ๋‹จ์ถ•ํ‚ค๋กœ ์ง€์ •๋˜์—ˆ๋Š”์ง€
    if words[0].upper() not in key_list:
        key_list.append(words[0].upper())
        words[0] = '[' + words[0] + ']'
        return
    
    for i in range(1, len(words)):
        if words[i-1] == ' ' and words[i].upper() not in key_list:
            key_list.append(words[i].upper())
            words[i] = '[' + words[i] + ']'
            return
    
    # ์–ด๋– ํ•œ ๊ฒƒ๋„ ๋‹จ์ถ•ํ‚ค๋กœ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๊ทธ๋ƒฅ ๋†”๋‘๋ฉฐ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„์น˜ ์•Š๋Š”๋‹ค.
    for i in range(1, len(words)):
        if words[i] != ' ' and words[i].upper() not in key_list:
            key_list.append(words[i].upper())
            words[i] = '[' + words[i] + ']'
            return


for i in range(n):
    return_key(input_list[i])
    print(*input_list[i],sep='')

 


# ์ฐธ๊ณ  (ํ‹€๋ฆฐ ์ฝ”๋“œ- ์ฒซ์‹œ๋„)

์™œ ํ‹€๋ฆฐ์ง€ ๋ชจ๋ฅด๊ฒ ์Œ.. ๋ชจ๋“  ์˜ˆ์ œ์— ๋Œ€ํ•œ ๋‹ต์€ ๋งž๋Š”๋ฐ 

# 2025-05-01 11:14 - 55
import sys
sys.stdin = open("input.txt","r")

n = int(sys.stdin.readline().strip())
string_list = [sys.stdin.readline().split() for _ in range(n)]

key = []
for string in string_list:
    flag = False
    for i in range(len(string)):
        # ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ์ด๋ฏธ ๋‹จ์ถ•ํ‚ค? -> ์ด๋ฏธ ์ง€์ •์‹œ ๋‹ค์Œ ๋‹จ์–ด
        if string[i][0].upper() not in key and string[i][0].lower() not in key:
            key.append(string[i][0])
            flag = True
            break
    
    if not flag:
        for i in range(len(string)):   
            # ๊ทธ ์–ด๋– ํ•œ ๊ฒƒ๋„ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„ X
            for s in string[i]:
                if s.upper() not in key and s.lower() not in key:
                    key.append(s)
                    flag = True
                    break
            if flag:
                break
    
    if not flag:
        key.append(None)

for i in range(len(string_list)):
    flag = False
    for string in string_list[i]:
        for s in string:
            if not flag and s == key[i]:
                print(f'[{s}]',end='')
                flag = True
            else:
                print(s,end='')
        print(end=' ')
    print()