๐Ÿงฉ Algorithm/SWEA

[SWEA] 1228. [S/W ๋ฌธ์ œํ•ด๊ฒฐ ๊ธฐ๋ณธ] 8์ผ์ฐจ - ์•”ํ˜ธ๋ฌธ1 (Python/D3)

devCloud 2024. 10. 30. 18:27
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‡

 

SW Expert Academy

SW ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ•™์Šต ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

swexpertacademy.com


ํ’€์ด

์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํŒŒ์‹ฑ

  • ๋ช…๋ น์–ด๋ฅผ "I" ๊ตฌ๋ถ„์ž๋กœ ๋‚˜๋ˆ„์–ด ์ €์žฅํ•œ๋‹ค.

 

๋ช…๋ น์–ด ์ฒ˜๋ฆฌ

  • ๊ฐ ๋ช…๋ น์–ด๋ฅผ ๋‹ค์‹œ ๋ฆฌ์ŠคํŠธ๋กœ ๋”ฐ๋กœ ์ €์žฅํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์‚ฝ์ž…์œ„์น˜, ์‚ฝ์ž…ํ•  ๊ฐ’์˜ ๊ฐœ์ˆ˜, ๊ทธ๋ฆฌ๊ณ  ์‚ฝ์ž…ํ•  ๊ฐ’๋“ค์„ ๊ตฌ๋ถ„ํ•œ๋‹ค.
  • ๋นˆ ๋ช…๋ น์–ด๋Š” ์ƒ๋žตํ•˜๊ณ , ๊ฐ ๋ช…๋ น์–ด์—์„œ ์œ„์น˜์™€ ๊ฐ’์„ ์ถ”์ถœํ•ด ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์— ์‚ฝ์ž…ํ•œ๋‹ค.

 

์‚ฝ์ž… ์‹คํ–‰

  • ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์— ์ฃผ์–ด์ง„ ์œ„์น˜์— ๊ฐ’์„ ์ฐจ๋ก€๋กœ ์‚ฝ์ž…ํ•œ๋‹ค.
  • ์œ„์น˜๋ฅผ ์ž˜ ๊ด€๋ฆฌํ•˜์—ฌ, ์‚ฝ์ž…ํ•  ๋•Œ๋งˆ๋‹ค ์›๋ณธ ๋ฆฌ์ŠคํŠธ์˜ ์œ„์น˜๊ฐ€ ๋ณ€๋™๋˜๋Š” ์ ์— ์œ ์˜ํ•œ๋‹ค.

 

์ถœ๋ ฅ

  • ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์˜ ์•ž 10๊ฐœ ๊ฐ’์„ result๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

Solution

for test_case in range(1, 11):
    _ = int(input())
    origin = list(map(int, input().split()))
    _ = int(input())
    command = list(map(str, input().split("I")))  # I ๊ตฌ๋ถ„์ž ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ €์žฅ

    for i in command:
        command_list = list(map(int, i.split()))  # ๋ช…๋ น์–ด๋ฅผ ํ•œ ์ค„์”ฉ ๊บผ๋‚ด์„œ ๋‹ค์‹œ ๋”ฐ๋กœ ์ €์žฅ
        if len(command_list) == 0:  # ์ฒซ ๋ฒˆ์งธ ๋ฆฌ์ŠคํŠธ๋Š” ๋น„์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์‹œํ•˜๋Š” ์ฝ”๋“œ ์ž‘์„ฑ
            continue
        for j in range(command_list[1]):
            origin.insert(command_list[0] + j, command_list[j + 2])  # ์›ํ•˜๋Š” ์œ„์น˜ i ์•ž์— ์ถ”๊ฐ€ํ•  ๊ฐ’ x๋ฅผ ์‚ฝ์ž…

    result = origin[:10]  # 10๋ฒˆ์งธ๊นŒ์ง€๋งŒ ์ถœ๋ ฅ

    print(f"#{test_case} {' '.join(map(str, result))}")

 

๊ฐœ์„ ํ•  ๋ถ€๋ถ„

  • ๋ถˆํ•„์š”ํ•œ ์กฐ๊ฑด๋ฌธ ์ œ๊ฑฐ
    • command_list๊ฐ€ ๋น„์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์กฐ๊ฑด์ด ์žˆ์ง€๋งŒ, split("I")๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ ์š”์†Œ๋งŒ ๋นˆ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ์ด ๋ถ€๋ถ„์„ ์Šฌ๋ผ์ด์‹ฑ์„ ํ†ตํ•ด command[1:]๋กœ ์ ‘๊ทผํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ๋นˆ ์š”์†Œ๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ช…๋ น์–ด ์ฒ˜๋ฆฌ ์ตœ์ ํ™”
    • origin.insert()๋Š” ๋งค๋ฒˆ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด๋™์‹œํ‚ค๋ฏ€๋กœ, ๋ฐ˜๋ณต์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์‚ฝ์ž… ๋ช…๋ น์–ด๋ฅผ ๋ฏธ๋ฆฌ ํ•œ ๋ฒˆ์— ๊ณ„์‚ฐํ•ด origin์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋‹ค.
  • ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต ์ตœ์ ํ™”
    • command์—์„œ ๊ฐ ๋ช…๋ น์„ ๋ฏธ๋ฆฌ ๋‚˜๋ˆ„๊ณ  ๊ฐ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ํ•„์š”ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋„๋ก ํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•ด์ง„๋‹ค.

 

์ตœ์ ํ™”๋œ ์ฝ”๋“œ

for test_case in range(1, 11):
    _ = int(input())
    origin = list(map(int, input().split()))
    _ = int(input())
    command = input().split("I")[1:]  # ์ฒซ ๋ฒˆ์งธ ๋นˆ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์‹œ์ž‘

    for i in command:
        command_list = list(map(int, i.split()))
        insert_position = command_list[0]
        num_to_insert = command_list[2:]
        
        # ํ•ด๋‹น ์œ„์น˜์— ๋ช…๋ น์–ด๋Œ€๋กœ ๊ฐ’ ์‚ฝ์ž…
        origin[insert_position:insert_position] = num_to_insert

    # 10๋ฒˆ์งธ๊นŒ์ง€๋งŒ ์ถœ๋ ฅ
    result = origin[:10]
    print(f"#{test_case} {' '.join(map(str, result))}")

 

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

์‹ค์ˆ˜ํ•œ ๋ถ€๋ถ„

 for j in range(command_list[1]):
            origin.insert(origin[command_list[0] + j], command_list[j + 2])

 

์ฒ˜์Œ์— ์ด๋ ‡๊ฒŒ ํ–ˆ๋Š”๋ฐ ์›ํ•˜๋Š” ๊ฐ’์ด ์•ˆ ๋‚˜์˜ค๊ธธ๋ž˜ for ๋ฌธ ๋Œ๋ฆฌ๋ฉด์„œ ์ผ์ผ์ด ์ถœ๋ ฅํ•ด๋ดค๋Š”๋ฐ ๊ณ„์† orgin ๋งจ ๋’ค์— ๊ฐ’์ด ์ถ”๊ฐ€๋์—ˆ๋‹ค. ๋‹ค์‹œ ํ™•์ธํ•ด๋ณด๋‹ˆ origin[command_list[0] + j]์—์„œ ๋ฆฌ์ŠคํŠธ ๊ฐ’ origin[command_list[0] + j]๋ฅผ ์ธ๋ฑ์Šค๋กœ ๋„ฃ๊ณ  ์žˆ์—ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— insert()๊ฐ€ ์ฐธ์กฐํ•œ ๊ฐ’์˜ ์œ„์น˜์— ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ , ๋งจ ๋์— ์ถ”๊ฐ€๋œ ๊ฒƒ์ด์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•ด๋‹น ์œ„์น˜ ์ธ๋ฑ์Šค๋งŒ ์ „๋‹ฌํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค. 

์ด๋ฏธ origin์— insert() ๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๋˜ origin ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค์— ์ถ”๊ฐ€ํ•˜๋‹ˆ ์ค‘์ฒฉ์ด ๋ผ์„œ ๋งจ ๋’ค์— ๊ฐ’์ด ์ถ”๊ฐ€๋œ ๊ฒƒ ๊ฐ™๋‹ค. 

 

์ด๊ฒƒ ๋•Œ๋ฌธ์— ๊ณ„์† ํ…Œ์ŠคํŠธ ํ•ด๋ณด๋А๋ผ ์‹œ๊ฐ„์„ ๋งŽ์ด ์ผ๋‹ค. ๋ถ„๋ช… ๋งž๊ฒŒ ์ผ๋Š”๋ฐ ์ž๊พธ๋งŒ ๋งจ ๋’ค์—๋งŒ ์ถ”๊ฐ€ ๋˜๋‹ˆ ๋ฏธ์น  ๋ป” ํ–ˆ๋‹ค...

 

์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 

join() ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ •์ˆ˜ ๋ฆฌ์ŠคํŠธ๋Š” ์•ˆ ๋œ๋‹ค. ์ •์ˆ˜ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด join() ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด TypeError ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ •์ˆ˜ํ˜• ๋ฆฌ์ŠคํŠธ๋ฅผ join() ํ•˜๋ ค๋ฉด ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ๋ชจ๋‘ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.


 

728x90