λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Algorithm

[Algorithm] Kotlin - ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μž…λ¬Έ [ μ—°μ†λœ 수의 ν•© ]

 

πŸŸ₯ TOPIC = μ•Œκ³ λ¦¬μ¦˜μ€ μ΅œλŒ€ν•œ 혼자 풀어보고, 풀이가 λλ‚˜λ„ 남이 μž‘μ„±ν•œ μ½”λ“œλ₯Ό 많이 λ΄λ‘μž. 

 

 

μ—°μ†λœ 수의 ν•©

 

 

문제 - ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μž…λ¬Έ μ—°μ†λœ 수의 ν•©

 

  • 문제 μ„€λͺ…을 보고 μ–΄λ–»κ²Œ ν’€λ©΄ 쒋을지에 κ΅¬μƒν•˜λŠ”λ°λ§Œ 1 μ‹œκ°„μ„ λ„˜κ²Œ μ“΄ 것 κ°™λ‹€... μΊ ν”„μ—μ„œ ν•™μŠ΅ν•  λ•Œ μ•Œκ³ λ¦¬μ¦˜μ— 크게 신경을 μ•ˆμΌλ˜κ²Œ 아쉽닀. κΎΈμ€€νžˆ λͺ‡ λ¬Έμ œμ”© ν’€μ–΄λ³΄λŠ” μ‹œκ°„ 갖도둝 ν•  것.
  • μ œν•œμ‚¬ν•­μ„ 잘 확인해야 ν•œλ‹€ 

 

첫번째 제좜 μ½”λ“œ - μ‹€νŒ¨

class Solution {
    fun solution(num: Int, total: Int): MutableList<Int> {

    var answer : MutableList<Int> = mutableListOf()
    var a = -total
    var sum = 0
    while (total != sum && total >= sum) {
        var b = 0
        sum = 0
        val list = mutableListOf<Int>()
        while (b <= num-1) {
            b++
            sum += a+b
            list.add(a+b)
            println(sum)
        }
        a++
        answer = list
    }

    return answer
}
}

 

  • 반볡문으둜 이것 저것 μ‹œλ„ν•˜λ©΄μ„œ 문제 μ„€λͺ… μ•„λž˜μ— μžˆλŠ” 좜λ ₯ μ˜ˆμ‹œκ°€ μ „λΆ€ ν‘œμ‹œλ˜λŠ” μ½”λ“œλ₯Ό λ§Œλ“€μ—ˆλ‹€. λ§Œλ“€κ³  λ³΄λ‹ˆκΉŒ λ³€μˆ˜λ„ a, b둜 λ§Œλ“€κ³ , 가독성도 μ•ˆμ’‹κ³ , μž‘λ™ 방식도 엉터리 ꡬ쑰둜 μž‘λ™λ˜λ„λ‘ λ§Œλ“€μ—ˆλ‹€.
  • μ½”λ“œ μ‹€ν–‰μ—μ„œ 4가지 ν…ŒμŠ€νŠΈκ°€ μ •μƒμ μœΌλ‘œ μž‘λ™λ˜μ–΄μ„œ μ œμΆœμ„ λˆŒλ €λ”λ‹ˆ 일뢀 ν…ŒμŠ€νŠΈμ—μ„œ μ‹€νŒ¨κ°€ λ‚˜μ˜€λ”λΌ.

 

ν…ŒμŠ€νŠΈ μ‹€νŒ¨ 원인

  • 7, 10λ²ˆν…ŒμŠ€νŠΈμ—μ„œ μ‹€νŒ¨ν–ˆλŠ”λ° 7, 10 번이 μ–΄λ–€ ν…ŒμŠ€νŠΈμΈμ§€ λͺ°λΌμ„œ μ§ˆλ¬Έν•˜κΈ° νƒ­μœΌλ‘œ λ“€μ–΄κ°”λ”λ‹ˆ 7번 ν…ŒμŠ€νŠΈκ°€ total이 0이더라. μž‘μ„± μ½”λ“œμ—λŠ” while λ¬Έ 쑰건이 total이 total != sum 이라, ν…ŒμŠ€νŠΈμ— ν†΅κ³Όν•˜μ§€ λͺ»ν–ˆλ˜ 것.
    • 문제 μ œν•œμ‚¬ν•­μ— total은 0μ΄μƒμ΄λΌλŠ” 쑰건이 μžˆλŠ”λ° μ œν•œμ‚¬ν•­μ„ 읽어보지 μ•Šμ•„μ„œ 생긴 문제

 

 

λ‘λ²ˆμ§Έ 제좜 μ½”λ“œ - μ°μ°ν•œ 성곡

class Solution {
    fun solution(num: Int, total: Int): MutableList<Int> {

    var answer : MutableList<Int> = mutableListOf()
    var startNum = -num
    var sum: Int? = null

    while (total != sum) {
        var count = 0
        sum = 0
        val list = mutableListOf<Int>()
        while (count <= num-1) {
            count++
            sum += startNum+count
            list.add(startNum+count)
        }
        startNum++
        answer = list
    }

    return answer
    }
}
  • λ³€μˆ˜ 이름도 λ°”κΎΈκ³  total이 0이어도 while 문이 μž‘λ™ν•  수 μžˆλ„λ‘ 일뢀 μˆ˜μ •ν•œ λ’€ 제좜. 톡과가 되긴 ν–ˆμœΌλ‚˜ μž‘λ™ 방식이 λ„ˆλ¬΄ 보잘 것 μ—†λŠ” μ½”λ“œ.

  • total 값이 클 κ²½μš°μ—λ„ 1자리 μˆ˜λΆ€ν„° μ°¨κ·Όμ°¨κ·Ό μ˜¬λΌκ°€λŠ” 문제λ₯Ό ν•΄κ²°ν•˜λ €κ³  λ‹€λ₯Έ λΆ„λ“€μ˜ 풀이λ₯Ό 보닀가 쒋은 방법이 λ³΄μ—¬μ„œ 적어두렀고 ν•œλ‹€.

 

주관적인 λͺ¨λ²•λ‹΅μ•ˆ - ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ°Έμ‘°

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 'μ‘°μš©ν˜„' λ‹˜ 풀이

  • μ—°μ†λœ μ •μˆ˜μ— ν‰κ· κ°’μœΌλ‘œ μ ‘κ·Όν•˜μ—¬ μ‹œμž‘μ κ³Ό 끝점을 μ°Ύμ•„μ„œ μ μš©ν•˜λŠ” λ°©λ²•μœΌλ‘œ ν‘Ό λ‹΅μ•ˆμ„ μˆ˜ν¬μžλ‘œμ„œ κ°νƒ„ν•˜λ©΄μ„œ λ΄€λ‹€. μˆ«μžλž‘ μΉœν•΄μ Έμ•Όκ² λ‹€λŠ” κΉ¨λ‹¬μŒμ„ μ€€ λ‹΅μ•ˆ.

 

 

 

 

 


 

[ A. 였늘 λ³΅μŠ΅ν•œ λ‚΄μš© / B. λ‹€μŒμ— ν•™μŠ΅ν•  λ‚΄μš© ]

A. νŠΉλ³„ν•˜κ²Œ λ³΅μŠ΅ν•œ λ‚΄μš©μ€ μ—†μ§€λ§Œ κΎΈμ€€ν•œ μ•Œκ³ λ¦¬μ¦˜ ν•™μŠ΅μ˜ μ€‘μš”μ„±μ„ λŠλ‚Œ.

 

B. ν™•λ₯ κ³Ό 톡계

 

B. μˆ˜ν•™

 


 

[λŠλ‚€ 점]

1. μˆ«μžλž‘ μΉœν•΄μ Έμ•Όκ² λ‹€... μ•„λŠ”κ²Œ μžˆμ–΄μ•Ό λ³΄μ΄λŠ”κ²Œ 더 λ§Žμ•„μ§ˆ 것 κ°™λ‹€