๐Ÿ“’ Today I Learn/๐Ÿ‘พ Error

[Python] ๋ฐ˜๋ณต๋ฌธ์—์„œ remove ์‚ฌ์šฉ์‹œ ์œ ์˜ํ•  ์ 

ny:D 2024. 5. 13. 20:51

240513 Today I Learn

๋ฌธ์ œ์ƒํ™ฉ

 

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

def solution(nums):
    answer = []
    
    for i in range(0, len(nums)):
        for j in range(i+1, len(nums)):
            for k in range(j+1, len(nums)):
                answer.append(nums[i]+nums[j]+nums[k])
                
    for n in answer:
        cnt = []
        for m in range(2,n):
            if n % m == 0:
                cnt.append(m)
        if len(cnt)!=0:
            answer.remove(n) 

    return len(answer)

 

๐ŸŽ“ ๋กœ์ง

  • ์ฒซ๋ฒˆ์งธ for๋ฌธ์—์„œ ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž ๋ฆฌ์ŠคํŠธ nums์— ์žˆ๋Š” ์ˆซ์ž ์ค‘ 3๊ฐœ๋ฅผ ๋ฝ‘์•„ ๋”ํ•˜๊ณ  ์ด๋ฅผ answer ๋ฆฌ์ŠคํŠธ์— appendํ•ด์ค€๋‹ค.
    → ์ด์ œ answer ๋ฆฌ์ŠคํŠธ๋Š” nums์—์„œ ๋žœ๋ค์œผ๋กœ ๋ฝ‘์€ ์„œ๋กœ ๋‹ค๋ฅธ ์„ธ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋œ๋‹ค.
  • ๋‘๋ฒˆ์งธ for๋ฌธ์€ ์†Œ์ˆ˜๋ฅผ ํŒ์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค.
    • ์†Œ์ˆ˜๋ž€ 1๊ณผ ์ž๊ธฐ ์ž์‹ ๋งŒ์„ ์•ฝ์ˆ˜๋กœ ํ•˜๋Š” ์ˆ˜๋กœ, ์ž„์˜์˜ ์ˆซ์ž x๊ฐ€ 2์™€ x-1 ์‚ฌ์ด์— ์•ฝ์ˆ˜๋ฅผ ๊ฐ€์ง„๋‹ค๋ฉด x๋Š” ์•ฝ์ˆ˜๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค.
    • ๋”ฐ๋ผ์„œ 2๋ถ€ํ„ฐ n-1๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ m์œผ๋กœ ๋ฐ›๋Š” ๋ฐ˜๋ณต๋ฌธ์„ ์ž‘์„ฑํ•œ ๋’ค ๊ทธ๊ฒƒ์ด answer์— ์žˆ๋Š” n์˜ ์•ฝ์ˆ˜๋ผ๋ฉด ๋นˆ ๋ฆฌ์ŠคํŠธ cnt์— ์ €์žฅํ•œ๋‹ค.
      → answer์˜ ๋ชจ๋“  ์›์†Œ n์€ cnt๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฐ–๋Š”๋‹ค.
    • ๋งŒ์•ฝ cnt์˜ ๊ธธ์ด๊ฐ€ 0์ด๋ผ๋ฉด ์†Œ์ˆ˜์ด๊ณ , 0์ด ์•„๋‹ˆ๋ผ๋ฉด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ answer์—์„œ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ n์„ remove๋ฅผ ์ด์šฉํ•ด ์‚ญ์ œํ•œ๋‹ค.
  • ๋งˆ์ง€๋ง‰์œผ๋กœ answer์—๋Š” ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  n์ด ์‚ญ์ œ๋˜์–ด ์†Œ์ˆ˜์ธ ์ˆ˜๋งŒ ๋‚จ์œผ๋ฏ€๋กœ answer์˜ ๊ธธ์ด๋ฅผ len์„ ์ด์šฉํ•ด ๊ตฌํ•ด์ค€๋‹ค.

๐Ÿ” ์—๋Ÿฌํƒ์ƒ‰

๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต๋ฌธ๋ณ„๋กœ ์ฝ”๋“œ๋ฅผ ๋ถ„์ ˆํ•ด์„œ ๋Œ๋ ค๋ณด์•˜๋‹ค. 

๋‘๋ฒˆ์งธ ์ฝ”๋“œ ๋ธ”๋Ÿญ๊นŒ์ง€๋Š” ์˜๋„์— ๋งž๊ฒŒ nums์—์„œ 3๊ฐ€์ง€์˜ ์ˆ˜๋ฅผ ๋ฝ‘์•„์„œ ๋”ํ•œ 10๊ฐœ์˜ ์ˆซ์ž(5C3 = 10)๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ์ฝ”๋“œ ๋ธ”๋Ÿญ์€ 3๋ฒˆ์งธ ์ฝ”๋“œ๋ธ”๋Ÿญ์ด๋‹ค. 

 

for n in answer:
    cnt  = []
    for m in range(2,n):
        if n%m == 0:
            cnt.append(m)
    print(f"cnt: {cnt}")
    if len(cnt) !=0:
        answer.remove(n)
    print(f"answer: {answer}")

3๋ฒˆ์งธ ์ฝ”๋“œ๋ธ”๋Ÿญ์—์„œ ์ค‘๊ฐ„์ค‘๊ฐ„ print๋ฌธ์„ ๋„ฃ์–ด๊ฐ€๋ฉฐ ์–ด๋Š ๋ถ€๋ถ„์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž.

๋‘๋ฒˆ์งธ ์ฝ”๋“œ๋ธ”๋Ÿญ์˜ output์ธ answer๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. [10, 9, 7, 14, 12, 11, 15, 13, 12, 17]

๊ทธ๋Ÿฌ๋‚˜ ์œ„ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด ์‹ค์ œ๋กœ ์ถœ๋ ฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ฉด

๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•œ ๋‹ค์Œ์˜ ์ˆซ์ž๋“ค์ด ๋น ์ง„ ์ฑ„ ์ฝ”๋“œ๊ฐ€ ๋Œ์•„๊ฐ„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

[10, 9, 7, 14, 12, 11, 15, 13, 12, 17]

 

for n in answer:
    cnt  = []
    for m in range(2,n):
        if n%m == 0:
            cnt.append(m)
    print(f"cnt: {cnt}")

for๋ฌธ๋งŒ ๋Œ๋ฆฐ ์ฑ„ cnt๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ์ •์ƒ์ ์œผ๋กœ answer์˜ ๋ชจ๋“  ์›์†Œ๋“ค์˜ ์•ฝ์ˆ˜(2~n-1 ์‚ฌ์ด)๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฒฐ๊ตญ remove๋กœ ์ธํ•ด ์› ๋ฆฌ์ŠคํŠธ์ธ answer์— ์˜ํ–ฅ์ด ๊ฐ€๊ณ ,

๊ทธ ์˜ํ–ฅ์œผ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.

 


list์—์„œ remove๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•„์ดํ…œ์„ ์ œ๊ฑฐํ•˜๋ฉด์„œ ๋™์‹œ์— for loop์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, 
๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๊ฐ€ ๋ง๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
for n in answer:
    print(f"answer: {answer}")
    cnt  = []
    for m in range(2,n):
        if n%m == 0:
            cnt.append(m)
    if len(cnt) >0:
        answer.remove(n)

remove๋˜๊ณ  ๋‹ค์Œ n์„ ๋ฝ‘์„ ๋•Œ answer ๋ฆฌ์ŠคํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ์ด๋‹ค.

์ด์ฒ˜๋Ÿผ remove๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ 

remove๋ฅผ ํ†ตํ•ด ์ œ๊ฑฐ๋œ 10์ด ์žˆ๋˜ answer[0] ์ž๋ฆฌ์—

์›๋ž˜ answer[1] ๊ฐ’์ด์—ˆ๋˜ 9๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด์„œ ๋ฐฐ์—ด์ด ํ‹€์–ด์ง€๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด ๋•Œ๋ฌธ์— 9, 12, 13, 17์„ ๊ฑด๋„ˆ๋›ด ์ฑ„ for๋ฌธ์ด ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ..!

 

 

๐Ÿ•ต๏ธ‍โ™€๏ธ ๋ฌธ์ œํ•ด๊ฒฐ

์ด ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด sorted(answer)๋ฅผ ์‚ฌ์šฉํ•ด answer๋ฅผ ์ •๋ ฌํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

for n in sorted(answer):
    cnt  = []
    for m in range(2,n):
        if n%m == 0:
            cnt.append(m)
    print(f"cnt: {cnt}")
    if len(cnt) != 0:
        answer.remove(n)
    print(f"answer: {answer}")

 

ํŠœํ„ฐ๋‹˜์˜ ์กฐ์–ธ
for๋ฌธ์„ ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ์ง์„ ์ƒ๊ฐํ•ด๋ณด์ž.

๋ฆฌ์ŠคํŠธ์— ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๋„ฃ์—ˆ๋‹ค๊ฐ€ ๋นผ๋Š” ๊ณผ์ • ์ž์ฒด๊ฐ€ ๋น„ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์—

๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ•ธ์…˜์„ ์ด์šฉํ•ด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ฆฌ์ŠคํŠธ์— ๋„ฃ๋Š” ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœ.