๐Ÿงฉ Algorithm/SWEA

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

devCloud 2023. 11. 19. 00:34
728x90
 

SW Expert Academy

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

swexpertacademy.com


์„ค๋ช…

๋†’์€ ๊ณณ์˜ ์ƒ์ž๋ฅผ ๋‚ฎ์€ ๊ณณ์— ์˜ฎ๊ธฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ตœ๊ณ ์ ๊ณผ ์ตœ์ €์ ์˜ ๊ฐ„๊ฒฉ์„ ์ค„์ธ๋‹ค.
์ œํ•œ๋œ ํšŸ์ˆ˜๋งŒํผ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…์„ ํ•œ ํ›„ ์ตœ๊ณ ์ ๊ณผ ์ตœ์ €์ ์˜ ์ฐจ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ œํ•œ๋œ ํšŸ์ˆ˜ ์ „์— ํ‰ํƒ„ํ™” ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ทธ ๋•Œ์˜ ์ตœ๊ณ ์ ๊ณผ ์ตœ์ €์ ์˜ ์ฐจ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

ํ’€์ด

min๊ณผ max๋ฅผ ์“ฐ๋ฉด์„œ ๋ฐ˜๋ณตํ•œ๋‹ค. 

1. ์ตœ๊ณ ์ ๊ณผ ์ตœ์ €์ ์„ ์ฐพ์•„ ๋”ฐ๋กœ ์ €์žฅํ•œ๋‹ค.

2. ๋ฆฌ์ŠคํŠธ์—์„œ ์ตœ๊ณ ์ ๊ณผ ์ตœ์ €์ ์„ ์ œ๊ฑฐํ•œ๋‹ค.

3. ์ œํ•œ๋ซ ํšŸ์ˆ˜๊ฐ€ ๋๊ฑฐ๋‚˜, ๋๋‚˜์ง€ ์•Š์•˜๋Š”๋ฐ ํ‰ํƒ„ํ™”๊ฐ€ ๋๋‹ค๋ฉด(์ตœ๊ณ ์ ๊ณผ ์ตœ์ €์ ์ด ๊ฐ™์•„์กŒ๋‹ค๋ฉด) ๋ฉˆ์ถ˜๋‹ค.

4. ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ฉด ์ตœ๊ณ ์ ์—์„œ 1์„ ๋นผ๊ณ , ์ตœ์ €์ ์—์„œ 1์„ ๋”ํ•œ ํ›„ ๋ฆฌ์ŠคํŠธ์—์„œ ๋„ฃ์–ด์ค€๋‹ค.

5. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ตœ๊ณ ์ ๊ณผ ์ตœ์ €์ ์˜ ์ฐจ์ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

Solution

for tc in range(1, 11):
    dump = int(input())
    box = list(map(int, input().split()))
    top = 0
    bottom = 0
    for i in range(dump+1):
        top = max(box)
        bottom = min(box)
        box.remove(top)
        box.remove(bottom)
        if i == dump or top == bottom: #if๋ฌธ ์—†์œผ๋ฉด ๋งˆ์ง€๋ง‰์— ํ•œ ๋ฒˆ ๋” ๋คํ”„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€
            break
        else: #๋คํ”„
            top -= 1
            bottom += 1

            box.append(top)
            box.append(bottom)

    print('#'+str(tc), top-bottom)

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

1์ฐจ ์ œ์ถœ์— ์‹คํŒจํ–ˆ๋‹ค. ํ…Œ์ŠคํŠธ ํŒŒ์ผ ์ค‘ 9๊ฐœ๊ฐ€ ๋งž๋‹ค๊ณ  ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์ฝ์–ด๋ณด์•˜๋Š”๋ฐ, ๋คํ”„ ํšŸ์ˆ˜ ์ด๋‚ด์— ํ‰ํƒ„ํ™”๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ทธ ๋•Œ์˜ ์ตœ๊ณ ์ ๊ณผ ์ตœ์ €์ ์˜ ๋†’์ด์ฐจ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฑธ ์ด์ œ์•ผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์กฐ๊ฑด๋ฌธ์„ ์ถ”๊ฐ€ํ•ด์„œ ์ œ์ถœํ•˜๋ ค ํ–ˆ๋Š”๋ฐ ๋˜ ์‹คํŒจํ•  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์˜ˆ๊ฐ์ด ๋“ค์–ด์„œ ๋Œ“๊ธ€์„ ํ•œ๋ฒˆ ๋ดค๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๋‚˜์™€ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์—ˆ๋˜ ๊ฒƒ!!! ๋ถˆํ–‰ ์ค‘ ๋‹คํ–‰์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

6๋ฒˆ ์ธํ’‹ ํŒŒ์ผ์—์„œ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๊ฐ€ 15์˜€๋Š”๋ฐ ์˜ฌ๋ฐ”๋ฅธ ๋‹ต์€ 14์˜€๋‹ค. dump+1์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค๊ณ  ํ•ด์„œ ์ˆ˜์ • ํ›„ ์ œ์ถœํ–ˆ๋”๋‹ˆ ์ •๋‹ต ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์—ˆ๋‹ค.. +1์„ ํ•ด์ค˜์•ผ ํ•˜๋Š” ์ด์œ ๋Š” '๋คํ”„๊ฐ€ ๋ชจ๋‘ ์™„๋ฃŒ๋œ ํ›„์— ์ฐจ์ด๋ฅผ ๊ตฌํ•˜๋ผ'๋ผ๋Š” ๋ฌธ์ œ ๋•Œ๋ฌธ์ด๋‹ค. 

 

๐Ÿ”ง๋ณด์™„ํ•  ์ 

๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฑฐํ•˜๊ณ  ์‚ฝ์ž…ํ•˜๋Š” ๊ณผ์ •์„ ์—†์• ๊ณ  ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋”ํ•˜๊ณ  ๋นผ๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋” ์ข‹์•˜์„ ๊ฒƒ ๊ฐ™๋‹ค. ์ •๋ ฌ์„ ์“ธ๊นŒ๋„ ํ–ˆ์ง€๋งŒ ๊ทธ๋ƒฅ ์ฒ˜์Œ์— ์ƒ๊ฐํ•œ๋Œ€๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค.

for tc in range(1, 11) :
    dump = int(input())
    box = list(map(int, input().split()))

    for _ in range(dump) :
        top = box.index(max(box))
        box[top] -= 1
        
        bottom = box.index(min(box))
        box[bottom] += 1

    ans = max(box) - min(box)

    print('#%d %d' % (tc, ans))
728x90