๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

๐Ÿงช์„ ํƒ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—ฐ์Šต - ref.23881 ๋ณธ๋ฌธ

๐Ÿง Algorithm/Baekjoon๐Ÿ’ก

๐Ÿงช์„ ํƒ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—ฐ์Šต - ref.23881

4:Bee 2024. 1. 12. 01:31
728x90

*ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—ฐ์Šต์€ ๋ฐฑ์ค€ 23881๋ฒˆ ๋ฌธ์ œ๋ฅผ ์ฐธ๊ณ  ํ–ˆ์Œ์„ ์ธ์ง€ํ•ด ๋‹ฌ๋ผ.

  • ์„ ํ˜•ํƒ์ƒ‰


๊ธฐ๋ณธ ํ˜•ํƒœ์˜ ์„ ํƒํ˜• ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์–ด๋ ค์›€์ด ์—†์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ง‰์ƒ ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด์„œ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•˜๋‹ค๋ณด๋‹ˆ ์–ด๋ ค์›€์„ ๋Š๊ผˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์•  ํ•˜์˜€๊ณ  ์ด์— ์ขŒ์ ˆํ•˜์ง€ ์•Š๊ณ  ๋ช‡์ผ์„ ํ‹€๋ฆฐ ๋ฌธ์ œ๋ฅผ ๋ฌดํ•œ ๋ฐ˜๋ณตํ•˜๋ฉฐ ๋‚ด๊ฐ€ ๋ฌด์—‡์„ ๋†“์น˜๊ณ  ์žˆ๋Š”์ง€ ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋‹ค. 3์ผ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๊ฐœ์ธ ์‚ฌ์ • ์ผ์ •๊ณผ ๋งž์ถฐ๊ฐ€๋ฉฐ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค ๋ณด๋‹ˆ 1์ฃผ์ผ ์ •๋„์˜ ์‹œ๊ฐ„์ด ํ•„์š”ํ–ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํŒŒ์ตํ•˜๊ณ  ์ดํ•ดํ–ˆ๋‹ค๊ธฐ ๋ณด๋‹จ ์„ ํƒ์ •๋ ฌ์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์กŒ์œผ๋ฉฐ ์–ด๋–ค ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์ œ๊ฐ€ ๋Œ์•„๊ฐ€๋Š”์ง€์— ์ดˆ์ ์„ ๋งž์ถ˜ ํฌ์ŠคํŒ…์ด๋‹ค.
์šฐ์„  ์„ ํƒ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ด์ค‘ for๋ฌธ๋งŒ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ”๋ผ๋ณธ ๊ทธ๋ฆผ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

์กฐ๊ธˆ ๋ณต์žกํ•ด ๋ณด์ด๋‹ˆ ๋ฆฌ์ŠคํŠธ ์š”์†Œ ํ•˜๋‚˜๋งŒ์„ ๋™์ž‘ ์‹œ์ผฐ์„ ๋•Œ์˜ ๋ชจ์Šต์€ ์˜ค๋ฅธ์ชฝ๊ณผ ๊ฐ™๋‹ค. ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.

 
N = [3, 1, 2, 5, 4]
 
for last in range(len(N)-1, -1, -1):
  
    for j in range(last, -1, -1):
 

์ด์ œ ์—ฌ๊ธฐ์— max ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์„œ ๊ฐ’์ด ์–ด๋–ป๊ฒŒ ํ• ๋‹น ๋˜๋Š”์ง€ ๊ทธ๋ฆผ์œผ๋กœ ํ™•์ธํ•ด ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

ํ• ๋‹น๋œ ๋ชจ์Šต์„ ๊ทธ๋ฆผ์œผ๋กœ ๊ทธ๋ ค๋‚ด๋ ค๋ฉด ์ „๋ฐ˜์ ์ด ๊ทธ๋ฆผ์˜ ์ˆ˜์ •์ด ํ•„์š”ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒ‰๊น”๋กœ ๋ณด๊ฒŒ ๋œ๋‹ค๋ฉด ๋นจ๊ฐ„์ƒ‰๊ณผ ํŒŒ๋ž€์ƒ‰๋“ค๊ณผ์˜ ๋น„๊ต๋งŒ ์œผ๋กœ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ์–ด๋–ค ๊ฑด์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 4๋ฅผ ๊ธฐ์ค€์œผ๋กœ N[j]๊ฐ€ ํฌํ•จ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’๋“ค ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์€ 5๊ฐ€ ๋œ ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ๋‹ค์‹œ ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ ์ฒ˜๋Ÿผ last๊ฐ’์„ ๋Š๊ณ  max๊ฐ’์€ j๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

N = [3, 1, 2, 5, 4]
 
for last in range(len(N)-1, -1, -1):
    max = last
    for j in range(last, -1, -1):
        if N[max] < N[j]: 
            max = j  
 

๊ทธ๋ ‡๊ฒŒ ๋‘ ๋ฒˆ์งธ for๋ฌธ์—์„œ ์ฒซ ๋ฒˆ์งธ for๋ฌธ์œผ๋กœ ๋ฒ”์œ„๊ฐ€ ์ขํ˜€ ์ง€๋ฉด์„œ ๊ฐ’์„ ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ํ•ด๋‹น ๋ฒ”์œ„ ์˜์—ญ์—์„œ max๊ฐ’์€ 5,0,3,3์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค. if๋ฌธ์— print(N[max])๋ฅผ ํ•ด๋ณด๋ฉด ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. 0์€ ์ถœ๋ ฅ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.
์ดํ›„ ์Šค์œ„์น˜๊ฐ€ ๋˜๋Š” ๊ตฌ๋ฌธ ๊ทธ๋ฆผ๋“ค ์ถ”๊ฐ€
์•„๋ž˜ ์ฝ”๋“œ๋Š” ์ •๋ ฌ์ด ์™„์„ฑ๋˜๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด๋‹ค.
* ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ• :  max๊ฐ’์„ ํŒ๋ณ„ํ•˜๊ณ  last์˜ ์ธ๋ฑ์Šค ์ž๋ฆฌ ๊ฐ’๊ณผ max์˜ ์ธ๋ฑ์Šค ์ž๋ฆฌ ๊ฐ’์„ ์„œ๋กœ switchํ•œ๋‹ค.

 
N = [3, 1, 2, 5, 4]
for last in range(len(N)-1, -1, -1):
    max = last
    for j in range(last, -1, -1):  # ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์ฐพ๋Š” loop
        if N[max] < N[j]:  # ๊ฐ€์žฅ ํฐ ์ˆ˜ ํŒ๋ณ„
            max = j
            # switch
            N[max], N[last] = N[last], N[max]  # ๋ฐฉ๋ฒ• 1
            
print(N)

*๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ• : max๊ฐ’๊ณผ j์˜ ๊ฐ’์ด ํŒ๋ณ„์ด ๋˜๋Š” ์ˆœ๊ฐ„ ๋ฐ”๋กœ max ์ธ๋ฑ์Šค ์ž๋ฆฌ ๊ฐ’๊ณผ j ์ธ๋ฑ์Šค ์ž๋ฆฌ ๊ฐ’์„ switchํ•œ๋‹ค.

 
N = [3, 1, 2, 5, 4]
for last in range(len(N)-1, -1, -1):
    max = last
    for j in range(last, -1, -1):  # ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์ฐพ๋Š” loop
        if N[max] < N[j]:  # ๊ฐ€์žฅ ํฐ ์ˆ˜ ํŒ๋ณ„
            # switch
            N[max], N[j] = N[j], N[max]  # ๋ฐฉ๋ฒ• 2

print(N)

 
23881๋ฒˆ์˜ ๋ฌธ์ œ๋Š” ์•„์ง ์ œ์ถœ ํ•˜์ง€ ์•Š์•˜๋‹ค. ์ดํ›„์— ๋‹ค์‹œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๊ณ  ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•ด ๋ณผ ์˜ˆ์ •์ด๋‹ค.

[๋ฐฑ์ค€] 23881๋ฒˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ์„ ํƒ ์ •๋ ฌ 1 - ํŒŒ์ด์ฌ

https://www.acmicpc.net/problem/23881 23881๋ฒˆ: ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—… - ์„ ํƒ ์ •๋ ฌ 1 ์ฒซ์งธ ์ค„์— ๋ฐฐ์—ด A์˜ ํฌ๊ธฐ N(5 โ‰ค N โ‰ค 10,000), ๊ตํ™˜ ํšŸ์ˆ˜ K(1 โ‰ค K โ‰ค N)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์— ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฐ์—ด A์˜ ์›์†Œ A1, A2, ..., AN์ด

clap0107.tistory.com

 

728x90
Comments