greenhelix
greenhelix
greenhelix
08-24 00:08
  • All (229)
    • Algorithm (118)
      • Algorithm (17)
      • Graph (0)
      • Core (6)
      • Python (18)
      • PythonSnippet (4)
      • Java (59)
      • Kotlin (14)
    • Project (0)
    • Study (8)
      • License (5)
      • EIP (3)
    • Programming (63)
      • Android (41)
      • Flutter (1)
      • Bugs Life (21)
      • Linux (0)
    • Tech (32)
      • Tech (17)
      • Drone (4)
      • Hacking (11)
    • Life (6)
      • INGRESS (1)
      • ์‹ฌ์‹œํ‹ฐ๋นŒ๋“œ์ž‡ (0)
250x250

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
greenhelix
Algorithm/Kotlin

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฟŒ์…”๋ฟŒ์…”] :Kotlin: ํฌ๋ ˆ์ธ ์ธํ˜• ๋ฝ‘๊ธฐ ๊ฒŒ์ž„

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฟŒ์…”๋ฟŒ์…”] :Kotlin: ํฌ๋ ˆ์ธ ์ธํ˜• ๋ฝ‘๊ธฐ ๊ฒŒ์ž„
Algorithm/Kotlin

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฟŒ์…”๋ฟŒ์…”] :Kotlin: ํฌ๋ ˆ์ธ ์ธํ˜• ๋ฝ‘๊ธฐ ๊ฒŒ์ž„

2021. 1. 4. 16:25

๐Ÿงฑ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”ํ‹€๋ฆฐ ๊ณต๋ถ€ 

๐Ÿ›ธ ํฌ๋ ˆ์ธ ์ธํ˜• ๋ฝ‘๊ธฐ ๊ฒŒ์ž„ 

 

๋ฌธ์ œ : ( ๋ณด๋Ÿฌ๊ฐ€๊ธฐ ) 

ํ•ด์„ค : 

์ด ๋ฌธ์ œ๋Š” ํฌ๋ ˆ์ธ์ด ๋‹ค์ฐจ์› ๋ฐฐ์—ด๋กœ ๋œ ๋ฐฐ์—ด์˜ ์ˆซ์ž๋ฅผ ๋ฝ‘์•„์„œ ๊ฐ™์€ ์ˆ˜์ผ ๊ฒฝ์šฐ ์—†์• ์ค€๋‹ค. ์ด ์—†์• ์ค€ ์ˆ˜์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋ผ๋Š” ๋ฌธ์ œ์ด๋‹ค. 

์œ„์˜ ์‚ฌ์ง„ ์ฒ˜๋Ÿผ ์ธํ˜•์ด ๋ฐฐ์—ด๋˜์–ด์žˆ๋‹ค. ์ด๊ฒƒ์„ ๊ฐ„๋‹จํžˆ ์˜ˆ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 

0

0

0

0

0

0

0

1

0

5

0

3

2

0

1

4

3

4

4

3

5

2

1

5

1

์ด๋ ‡๊ฒŒ 5*5 ํ˜•ํƒœ๋กœ 2์ฐจ์› ๋ฐฐ์—ด์„ ์ค€๋‹ค. ๋‚˜๋Š” ์ด ๋ถ€๋ถ„์—์„œ ํ˜ผ๋™์ด ์™€์„œ ํ—ค๋งธ๋‹ค.. ์ฃผ์–ด์ง„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ค€๋‹ค. 

[[00000],[00105],[03201],[43443],[52151]] ์ด๋ถ€๋ถ„์„ ๋ฐ˜๋Œ€๋กœ ์ƒ๊ฐํ•ด์„œ ๋งŽ์ด ํ•ด๋งธ์ง€๋งŒ ์ด ๋ถ€๋ถ„์„ ์–ด๋ ต๊ฒŒ ๋ณด์ง€๋ง๊ณ  ์œ„์˜ ํ‘œ์ฒ˜๋Ÿผ ์ญˆ์šฑ ์Œ“์—ฌ์žˆ๋‹ค๋Š” ์ƒํƒœ๋กœ ๋ณธ๋‹ค๋ฉด ์ดํ•ด๊ฐ€ ๋น ๋ฅด๋‹ค. 

 

์ด ๋ฐฐ์—ด ๋ง๊ณ ๋„ ํฌ๋ ˆ์ธ์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด ์ฃผ๋Š” ๋ฐฐ์—ด์ด ํ•˜๋‚˜ ๋” ์ฃผ์–ด์ง„๋‹ค. 

[1, 5, 1, 3, 2, 1, 2] ๋ผ๊ณ  ์˜ˆ๋ฅผ ๋“ค๋ฉด, 

ํฌ๋ ˆ์ธ์€ 1๋ฒˆ ์œ„์น˜์ธ 4๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. ๋ฌด์Šจ๋ง์ด๋ƒ ํ•˜๋ฉด 0 0 0 0 0 ์ด ๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ 0๋ฒˆ์งธ ์ธ์ž์ด์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๋งจ ๋’ค์˜ ๊ฒƒ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์œ„์˜ ํ‘œ ์ƒ์—์„œ์˜ ๊ฐ€์žฅ ์œ„์˜ ๊ฐ’์ธ 4๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ๋ณด๋ฉด๋œ๋‹ค. ์ฆ‰ ๋‹ค์ฐจ์› ๋ฐฐ์—ด ์ƒ์—์„œ๋Š” 

3๋ฒˆ์งธ ์ธ์ž์—์„œ 0๋ฒˆ์งธ ์š”์†Œ์ธ 4๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋œ๋‹ค. 

(ํ˜น์‹œ ์ดํ•ด๊ฐ€ ์•ˆ๋œ๋‹ค๋ฉด ๋Œ“๊ธ€.) 

 

์ด์ œ ์ดํ•ด๊ฐ€ ๋˜๋‹ˆ ๋‹ค์‹œ ๋ณต๊ธฐ๋ฅผ ํ•ด๋ณด๊ฒ ๋‹ค. 

ํฌ๋ ˆ์ธ์˜ ์ขŒํ‘œ์™€ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ์ขŒํ‘œ๋ฅผ ์ •์ƒ ๊ฐ€๋™๋˜๊ฒŒ ์ฝ”๋”ฉ์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๋ ˆ์ธ ์œ„์น˜๊ฐ€ 1์ด๋ผ๋ฉด, ๋‹ค์ฐจ์›๋ฐฐ์—ด์˜ ๋ชจ๋“ ~ 0๋ฒˆ์งธ ์ธ์ž๋“ค ์ค‘ 0์ด ์•„๋‹Œ ๊ฐ’์—์„œ ์ฒ˜์Œ ๋‚˜์˜ค๋Š” ๊ฐ’์ด ์Šคํƒ์— ์Œ“์—ฌ์•ผ ํ•œ๋‹ค. 

 

๋‘ ๊ฐ€์ง€ ๊ฐœ๋…์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค. 

  • ์Šคํƒ 
  • ๋‹ค์ฐจ์› ๋ฐฐ์—ด์—์„œ์˜ ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ

์Šคํƒ์€ ์ฑ…์„ ์Œ“๋Š” ๋“ฏ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  pop, push, peek ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ๊ฐ’์„ ๊บผ๋ƒˆ๋‹ค ๋„ฃ์—ˆ๋‹ค ์ง€์› ๋‹ค ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๊ธฐ์ค€ ์ ์€ ์ œ์ผ ๋งˆ์ง€๋ง‰ ๊ฐ’์ด ๋œ๋‹ค. FILO ์˜ ๊ฐœ๋…์„ ์•Œ๋ฉด ๊ฐ„๋‹จํ•˜๋‹ค. 

๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ ๋ณดํ†ต [][] ์ด๋ ‡๊ฒŒ ๋‘๊ฐ€์ง€ ์ฃผ์†Œ๊ฐ’์„ ๋„ฃ์„ ๊ณต๊ฐ„์ด ์ƒ๊ธด๋‹ค. ์•ž์˜ [] ๋Š” ์ฒซ ์š”์†Œ์˜ ์œ„์น˜, ๋’ค์˜ [] ๋Š” ํ•ด๋‹น ์š”์†Œ ์•ˆ์— ์š”์†Œ์˜ ์œ„์น˜๋ผ๊ณ  ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ๋ฐ˜๋Œ€๋กœ ์›€์ง์ผ ์ˆ˜๋„ ์žˆ๋‹ค. 

 

์ด์ œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž. ( ์ฐธ๊ณ ๋กœ ์ด ํ’€์ด๋Š” ๋‚˜๋„ ๋‹ต์•ˆ์„ ์ถ”์ถœํ•œ ๊ฒƒ์ด๋‹ค. ๋‹ค๋ฅธ ๋ถ„์˜! ) 

import java.util.* 
class Solution{
    fun solution(board: Array<IntArray>, moves: IntArray): Int{
        var answer = 0 
        val stack = Stack<Int>() 
        moves.forEach {  
            for(i in board.indices) { 
                if(board[i][it-1] != 0 ){                     
                    if(stack.isNotEmpty() && stack.peek() == board[i][it-1]){                        
                        answer += 2
                        stack.pop()
                    }else{
                        stack.push(board[i][it-1])
                    }
                    board[i][it-1] = 0 
                    break
                }            
            }
         }
        return answer
    }
}

๋จผ์ €, java.util.* ์„ importํ•ด์ค€๋‹ค. 

์ด์ œ, stack์„ ์„ ์–ธํ•ด์ค€๋‹ค.  val stack = Stack<Int>()

 

ํฌ๋ ˆ์ธ์˜ ์›€์ง์ž„์ธ  moves๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ๋จผ์ € ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค์ค€๋‹ค. moves.forEach{}

 

๋‹ค์Œ์€ ์ธํ˜•๋“ค์ด ๋“ค์–ด์žˆ๋Š” ๋ณด๋“œ๋ฅผ ์ธ๋ฑ์Šค ๊ธฐ์ค€์œผ๋กœ ๋Œ๋ ค์ค€๋‹ค. for(i in board.indices) {}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํฌ๋ ˆ์ธ์˜ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณด๋“œํŒ์•ˆ์„ ๋Œ์•„๋‹ค๋‹Œ๋‹ค๊ณ  ๋ณด๋ฉด๋œ๋‹ค. 

 

์ด์ œ ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด์„œ ์›ํ•˜๋Š” ์กฐ๊ฑด์œผ๋กœ ํŠœ๋‹ํ•ด์ค€๋‹ค. 

if(board[i][it-1] != 0)  ์ด ์กฐ๊ฑด๋ฌธ์€ 0์˜ ๊ฐ’์„ ๊ฑธ๋Ÿฌ์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  i๊ฐ€ ๊ธฐ์ค€์ด๋‹ค. i๋Š” ๋ณด๋“œ์˜ ์ธ๋ฑ์Šค์ด๊ธฐ ๋•Œ๋ฌธ์—

๋ชจ๋“  ์š”์†Œ๋“ค์˜ 0๋ฒˆ์งธ ์˜ ์ธ์ž๋ฅผ ๋จผ์ € ์ญˆ์šฑ ๋Œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ํฌ๋ ˆ์ธ์˜ ์œ„์น˜๊ฐ€ +1 ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— -1์„ ํ•ด์ฃผ์–ด it -1 ์„ ํ•ด์ค€๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์œ„์˜ ํ‘œ์—์„œ ์„ธ๋กœ ๋ฐฉํ–ฅ์œผ๋กœ 0์ด ์•„๋‹Œ ๊ฐ’ ์ฒซ๋ฒˆ์งธ๋ฅผ ์ฐพ๊ฒŒ ๋œ๋‹ค. 

๊ทธ๋ž˜์„œ ์ฒ˜์Œ stack์— ์Œ“์ด๊ฒŒ ๋˜๋Š” ๊ฐ’์€ 4๊ฐ€ ๋œ๋‹ค. stack.push(board[i][it-1]) 

 

์œ„์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์ด else ๋ถ€๋ถ„์ด ๋จผ์ € ์ ์šฉ๋œ๋‹ค. 

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ stack์— ๊ฐ™์€ ๊ฐ’์ด ์Œ“์ด๊ฒŒ ๋˜๋ฉด ์‚ญ์ œํ•˜๊ณ  ์‚ญ์ œ๋œ ์š”์†Œ์˜ ๊ฐฏ์ˆ˜๋ฅผ ์„ธ์–ด์ฃผ๋Š” ์กฐ๊ฑด์„ ๋‹ฌ์•„์ค€๋‹ค. 

if(stack.isNotEmpty() && stack.peek() == board[i][it-1])  

์Šคํƒ์ด ๋น„์–ด์žˆ์ง€ ์•Š๊ฑฐ๋‚˜, ์Šคํƒ์—์„œ ๋งจ ๋’ค ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ณ , ๊ทธ ๊ฐ’์ด ํ•ด๋‹น 0์ด ์•„๋‹Œ ๊ฐ’๊ณผ ๊ฐ™๋‹ค๋ฉด 

answer+2 ๋ฅผ ํ•ด์ค€๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๊ฐ’์€ ์ง€์›Œ์ฃผ๊ธฐ ์œ„ํ•ด stack.pop() ์„ ํ•ด์ค€๋‹ค. 

 

์ž ์ด๋ ‡๊ฒŒ ๋˜์—ˆ์œผ๋ฉด ํ•ด๋‹น ๊ฐ’์€ Stack์œผ๋กœ ๋“ค์–ด๊ฐ”๊ธฐ ๋•Œ๋ฌธ์—, board[i][it-1] = 0์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ๋นˆ ๊ฐ’์œผ๋กœ ์„ค์ •!

 

์ด์ œ return answer ๋ฅผ ํ•˜๋ฉด ์›ํ•˜๋Š” ๊ฐ’์ด ๋‚˜์˜จ๋‹ค. 

 

728x90
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Algorithm > Kotlin' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Kotlin ๊ธฐ๋ณธ ๋ณ€์ˆ˜ ๋ฐ ์—ฐ์‚ฐ์ž  (0) 2021.04.30
#08_CS Arcade Kotlin >> Matrix Elements Sum  (0) 2020.12.31
#07_CS Arcade Kotlin >> Almost Increasing Sequence  (0) 2020.12.30
  • ๐Ÿงฑ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”ํ‹€๋ฆฐ ๊ณต๋ถ€ 
  • ๐Ÿ›ธ ํฌ๋ ˆ์ธ ์ธํ˜• ๋ฝ‘๊ธฐ ๊ฒŒ์ž„ 
'Algorithm/Kotlin' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • Kotlin ์กฐ๊ฑด๋ฌธ
  • Kotlin ๊ธฐ๋ณธ ๋ณ€์ˆ˜ ๋ฐ ์—ฐ์‚ฐ์ž
  • #08_CS Arcade Kotlin >> Matrix Elements Sum
  • #07_CS Arcade Kotlin >> Almost Increasing Sequence
greenhelix
greenhelix
๊ฐœ๋ฐœ์— ๊ด€ํ•œ ๊ฒƒ๋“ค๊ณผ ๊ฐœ์ธ์ ์ธ ๊ฒƒ์„ ๋‹ด๋Š” ๋ธ”๋กœ๊ทธ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.