[Android TIL] 240305
๋ฐ˜์‘ํ˜•

 

 

 

 

 

~ Today I Learned ~

 

โœ”๏ธ Kotlin ๋ฌธ๋ฒ• ์ข…ํ•ฉ๋ฐ˜ 2์ฃผ์ฐจ ์ˆ˜๊ฐ• 
โœ”๏ธ Gitbook ์ฝ”ํ‹€๋ฆฐ ๋ฌธ๋ฒ• ๊ณต๋ถ€ (๋ฐฐ์—ด๊ณผ ์ปฌ๋ ‰์…˜, ๋ฐ˜๋ณต๋ฌธ, ํ•จ์ˆ˜)
โœ”๏ธ ๋ฐ์ผ๋ฆฌ Algorithm ๋ฌธ์ œ ํ’€์ด
โœ”๏ธ ํ•™์Šต๋ฒ• ํŠน๊ฐ•

 

 

 


 

 

 

1. Kotlin ๋ฌธ๋ฒ• ์ข…ํ•ฉ๋ฐ˜ 2์ฃผ์ฐจ ์ˆ˜๊ฐ•

 

  • ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜ (์นด๋ฉœ์ผ€์ด์Šค, ์Šค๋„ค์ดํฌ์ผ€์ด์Šค, ํŒŒ์Šค์นผ์ผ€์ด์Šค)
  • ์ถœ๋ ฅ๊ณผ ์ž…๋ ฅ (print, println)
  • ์ž๋ฃŒํ˜• (int, long, short, byte, float, double, char, string, boolean)
  • ๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜ (var, val)
  • ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜ (+,-,*,/,%)(๋Œ€์ž…/์ฆ๊ฐ =, +=, -=, *=, /=, %=, ++, --)(๋น„๊ต ==, <=, >=, !=, >, <)
  • ์กฐ๊ฑด์‹์˜ ์‚ฌ์šฉ (if, if~else, when)
  • ๋ฐ˜๋ณต๋ฌธ์˜ ์‚ฌ์šฉ (for, while)

 

์ด๋ฏธ ์ด์ „์— C, Java, Python ๋ฌธ๋ฒ• ๋ฐ ๊ธฐ์‚ฌ ์ทจ๋“ ์‹œ์— ๊ณต๋ถ€ํ–ˆ๋˜ ๋ถ€๋ถ„์ด๋ผ ๋น ๋ฅด๊ฒŒ ์ •๋ฆฌ ์—†์ด ํ›‘๊ธฐ๋งŒ ํ–ˆ๋‹ค.
๊ธฐ์กด์— ์ •๋ฆฌํ–ˆ๋˜ ๊ธฐ์ดˆ ๋ฌธ๋ฒ• ๋ถ€๋ถ„์— ํ•„์š”ํ•œ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ˆ˜์ •ํ•˜์˜€๋‹ค.

 

 

 

 

2. Gitbook ์ฝ”ํ‹€๋ฆฐ ๋ฌธ๋ฒ• ๊ณต๋ถ€ (๋ฐฐ์—ด๊ณผ ์ปฌ๋ ‰์…˜, ๋ฐ˜๋ณต๋ฌธ, ํ•จ์ˆ˜)

 

[Android ๊ธฐ์ดˆ] 03. ์ฝ”ํ‹€๋ฆฐ ๊ธฐ๋ณธ ๋ฌธ๋ฒ• - ๋ฐฐ์—ด๊ณผ ์ปฌ๋ ‰์…˜

4 ๋ฐฐ์—ด๊ณผ ์ปฌ๋ ‰์…˜ Int, Double ๋“ฑ: ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์— ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ์ €์žฅ ๋ฐฐ์—ด(Array), ์ปฌ๋ ‰์…˜(Collection - List, Map, Set) : ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์— ์ €์žฅ ๋ฐฐ์—ด (Array) var ๋ณ€์ˆ˜ = Array(๊ฐœ์ˆ˜) ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ๋‹ด์„

limheejin.tistory.com

 

[Android ๊ธฐ์ดˆ] 03. ์ฝ”ํ‹€๋ฆฐ ๊ธฐ๋ณธ ๋ฌธ๋ฒ• - ๋ฐ˜๋ณต๋ฌธ

5 ๋ฐ˜๋ณต๋ฌธ for: ํŠน์ • ํšŸ์ˆ˜๋งŒํผ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณต while: ํŠน์ • ์กฐ๊ฑด์ด ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณต for ๋ฐ˜๋ณต๋ฌธ for (๋ฐ˜๋ณตํ•  ๋ฒ”์œ„){ // ๋ฐ˜๋ณต๋  ์‹คํ–‰ ์ฝ”๋“œ } for in .. : ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ์˜ for ๋ฐ˜๋ณต๋ฌธ for (๋ณ€์ˆ˜ in ์‹œ์ž‘๊ฐ’.

limheejin.tistory.com

 

[Android ๊ธฐ์ดˆ] 03. ์ฝ”ํ‹€๋ฆฐ ๊ธฐ๋ณธ ๋ฌธ๋ฒ• - ํ•จ์ˆ˜

6 ํ•จ์ˆ˜ ์ฝ”๋“œ์˜ ์‹คํ–‰์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์—์„œ ์‹œ์ž‘ [ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘] -- ํ˜ธ์ถœ --> [ํ•จ์ˆ˜] ๋‹จ์ˆœํžˆ ๋งํ•˜๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ๋„ onCreate() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์‹คํ–‰๋œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ ํ•จ์ˆ˜์˜ ์ •์˜ fun ํ•จ์ˆ˜๋ช…(ํŒŒ

limheejin.tistory.com

 

  • ๋ฐฐ์—ด๊ณผ ์ปฌ๋ ‰์…˜
  • ๋ฐ˜๋ณต๋ฌธ
  • ํ•จ์ˆ˜

์œ„ ๋‚ด์šฉ์— ๋Œ€ํ•ด ํ•™์Šตํ•˜์˜€๋‹ค.

 

 

 

 

3. ๋ฐ์ผ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด

 

[Kotlin] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ - x๋งŒํผ ๊ฐ„๊ฒฉ์ด ์žˆ๋Š” n๊ฐœ์˜ ์ˆซ์ž

https://school.programmers.co.kr/learn/courses/30/lessons/12954 [์˜ค๋ฅ˜ ์ฝ”๋“œ] ํ…Œ์ŠคํŠธ 14๊ฐœ ์ค‘ 13, 14๋ฒˆ ํ…Œ์ŠคํŠธ ํ†ต๊ณผ ๋ชปํ•œ ์ฝ”๋“œ class Solution { fun solution(x: Int, n: Int): IntArray { var list = IntArray(n) for (i in 0..n-1){ list[i] = x * (

limheejin.tistory.com

 

โ“[Kotlin] ์ž์—ฐ์ˆ˜ ๋’ค์ง‘์–ด ๋ฐฐ์—ด๋กœ ๋ฐ”๊พธ๊ธฐ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜)

๋ฌธ์ œ https://school.programmers.co.kr/learn/courses/30/lessons/12932 ์ ‘๊ทผ ์ž์—ฐ์ˆ˜ n์„ ์ŠคํŠธ๋ง์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ๋’ค์ง‘๊ณ , splitํ•ด์„œ Char ๋ฐฐ์—ด์— ๋„ฃ์–ด์ฃผ๋ฉด ๋˜์ง€ ์•Š์„๊นŒ? ์•„๋ž˜๋Š” ๋Œ€์ถฉ ๊ตฌํ˜„ํ•œ ์˜์‹์˜ ํ๋ฆ„ class Solution { fun

limheejin.tistory.com

 

  • โœ”๏ธ  x๋งŒํผ ๊ฐ„๊ฒฉ์ด ์žˆ๋Š” n๊ฐœ์˜ ์ˆซ์ž
  • โœ”๏ธ  ์ž์—ฐ์ˆ˜ ๋’ค์ง‘์–ด ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ธฐ
  • ์‚ฌ์‹ค 'ํ‘ธ๋“œ ํŒŒ์ดํ„ฐ ๋Œ€ํšŒ' ๋ฌธ์ œ๋„ 1์‹œ๊ฐ„๋™์•ˆ ์‹œ๋„ํ•ด๋ณด์•˜๋Š”๋ฐ ๋ชป ํ’€์–ด์„œ ๋ฐฐ์šด Kotlin ๋ฌธ๋ฒ•๋งŒ ์•„๋ž˜์— ์ •๋ฆฌํ–ˆ๋‹ค.

 

๋”๋ณด๊ธฐ

๐Ÿ’ก .size

  • ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœํผํ‹ฐ

 

๐Ÿ’ก  slice()

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

 

๐Ÿ’ก joinToString()

  • ์›๋ž˜ List๋ฅผ print๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜ํ•˜๋ฉด toString์ด ํ˜ธ์ถœ๋˜๋ฉฐ [ ... ] ์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜
  • ํ•˜์ง€๋งŒ ๋ฆฌ์ŠคํŠธ์˜ ์›์†Œ๋“ค์„ ๋ชจ๋‘ ์—ฐ๊ฒฐํ•œ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ joinToString ํ•จ์ˆ˜ ์ด์šฉ
  •  ""์„ ์ฃผ๋ฉด ๊ณต๋ฐฑ์—†์ด ์—ฐ๊ฒฐ๋จ
    ์˜ˆ) ๋ฐฐ์—ด๋ช….joinToString("")

 

๐Ÿ’ก .indices

  • Collection, Array ํด๋ž˜์Šค์— ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ
  • ์ปฌ๋ ‰์…˜ ํƒ€์ž…์˜ ์ธ๋ฑ์Šค ๋ฒ”์œ„๋ฅผ ๋ฐ˜ํ™˜
  • ์˜ˆ๋ฅผ ๋“ค์–ด list ๊ฐ์ฒด์— ๋ฐ์ดํ„ฐ๊ฐ€ 3๊ฐœ ๋“ค์–ด์žˆ๋‹ค๋ฉด, list.indices๋Š” 0..2๋ฅผ ๋ฐ˜ํ™˜
    ์˜ˆ) for (i in list.indices)๋Š” for (i in 0..2)๋กœ ์„ ์–ธํ•œ ๊ฒƒ๊ณผ ๊ฐ™์Œ

 

 

 

4. ํ•™์Šต๋ฒ• ํŠน๊ฐ•

 

Not Coder, Be Developer

  • TIL, ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์Šต๊ด€ํ™”, ๋‚˜์˜ ์ž์‚ฐ์„ ๋งŒ๋“ค๊ธฐ
  • ๊ฐœ์ธ ๊ณผ์ œ, ํŒ€ ๊ณผ์ œ: ๋ฐฐ์šด ๋‚ด์šฉ ๋ณต์Šตํ•˜๋ฉฐ ์‚ฌ๊ณ ๋ ฅ๊ณผ ๊ตฌํ˜„๋ ฅ ์ค‘์ ์œผ๋กœ ๋‹จ๋ ฅ
  • ํ”„๋กœ์ ํŠธ: ๊ธฐ์ˆ ์  ์˜์‚ฌ๊ฒฐ์ •, ๊ธฐ์ˆ ์  ๊ณ ๋ฏผ์„ ๋™์‹œ์—
  • ๊ฐœ๋ฐœ์—ญ๋Ÿ‰์ ๊ฒ€: ๋ฉ”ํƒ€์ธ์ง€, ์ˆ˜๋ฃŒ ๋•Œ๊นŒ์ง€ ๋„๋‹ฌํ•ด์•ผํ•˜๋Š” ์‹ค๋ ฅ ๋ชฉํ‘œ

 

๊ธฐ์ˆ ์  ๊ณ ๋ฏผ์„ ์ž˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. ๋กœ์ง๊ณผ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์˜๋„ ์ƒ๊ฐํ•˜๊ธฐ (๊ทธ๋ƒฅ ์ด๋ ‡๊ฒŒ ์งฐ๋‹คX ์ด์œ ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”)
  2. ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ์ˆ , ์Šคํƒ์— ๋ชฉ์ ๊ณผ ๊ทผ๊ฑฐ ๊ฐ€์ง€๊ธฐ
  3. ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ๊ณ ๋ฏผํ•˜๊ธฐ

 

 

 


 

~ Trouble Shooting ~

 

 

class Solution {
    fun solution(n: Int): Int {
        
        for (i:Int in 2..n-1){
            if (n % i == 1) return i
        }
            return 0    // ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ด„ํ˜ธ ์•ˆ์— return 0์„ ๋„ฃ์–ด์•ผ ํ–ˆ๋‹ค. 
    }
}

 

1. solution ํ•จ์ˆ˜์— return 0 ๊ฐ’์„ ๋„ฃ์ง€ ์•Š์•„ ์ƒ๊ธด ์ปดํŒŒ์ผ ์˜ค๋ฅ˜

  • ํ˜„์žฌ for๋ฌธ ์•ˆ์— if๊ฐ€ ์žˆ๊ณ  ๊ทธ ์•ˆ์— return(๋ฐ˜ํ™˜๊ฐ’)์ด ์žˆ์Œ
  • ๋ฉ”์ธ ํ•จ์ˆ˜์ธ solution ํ•จ์ˆ˜๋ฅผ ๋ณด๋ฉด ๋ฐ˜ํ™˜๊ฐ’์„ Int๋กœ ์ •์˜ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, else์˜ ๊ฒฝ์šฐ ์ปดํ“จํ„ฐ๋Š” ๋ฐ˜ํ™˜๊ฐ’์„ ๊ฐ–์ง€ ๋ชปํ•จ
  • ๋”ฐ๋ผ์„œ ํ˜•์‹์ ์œผ๋กœ๋ผ๋„ ๊ทธ ์ด์™ธ์˜ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์ •์ˆ˜ํ˜• ๋ฐ˜ํ™˜๊ฐ’ return 0์„ ์„ค์ •ํ•ด์•ผ ํ•จ

 

 

 

 


~ Retrospect ~

 

์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด๋Š” ๋ฌด๋ฆฌํ•˜์ง€ ์•Š๊ณ  ํ•˜๋ฃจ 2๊ฐœ๋กœ ์ •ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์‚ฌ์‹ค ์บ ํ”„๊ฐ€ ์‹œ์ž‘๋˜๋ฉด์„œ๋Š” ํ•˜๋ฃจ 5~10๊ฐœ ํ’€์ด๋ฅผ ๋ชฉํ‘œ๋กœ ํ–ˆ์—ˆ๋Š”๋ฐ, ์ ์ฐจ ์ง„ํ–‰ํ•  ์ˆ˜๋ก ์•ˆ๋“œ๋กœ์ด๋“œ ๋ฐ ์ฝ”ํ‹€๋ฆฐ ํ•™์Šต๊ณผ ๋ณ‘ํ–‰ํ•˜๊ธฐ์—๋Š” ์ข€ ๋ถ€๋‹ด์Šค๋Ÿฝ๊ณ  ์ฃผ๊ฐ์ด ์ „๋„๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค๋Š” ๋А๋‚Œ์ด ๋“ค์—ˆ๋‹ค. ๊ดœํžˆ ์—ฌ๋Ÿฌ ๊ฐœ ๋นจ๋ฆฌ ํ’€๋ ค๊ณ ํ•˜๋‹ค ์ฒดํ•˜์ง€๋ง๊ณ , ๊พธ์ค€ํ•˜๊ฒŒ ์ฒœ์ฒœํžˆ ์‚ฌ๊ณ ๋ ฅ์„ ๋Š˜๋ ค๊ฐ€์•ผ๊ฒ ๋‹ค.

 

 

 

๋ฐ˜์‘ํ˜•
 ๐Ÿ’ฌ C O M M E N T