[ 2023-08-25 ๐Ÿฅพ TIL ]

Burkeyยท2023๋…„ 8์›” 25์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
150/157

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋‹คํŠธ๊ฒŒ์ž„

๋ฌธ์ œ

์นด์นด์˜คํ†ก ๊ฒŒ์ž„๋ณ„์˜ ํ•˜๋ฐ˜๊ธฐ ์‹ ๊ทœ ์„œ๋น„์Šค๋กœ ๋‹คํŠธ ๊ฒŒ์ž„์„ ์ถœ์‹œํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋‹คํŠธ ๊ฒŒ์ž„์€ ๋‹คํŠธํŒ์— ๋‹คํŠธ๋ฅผ ์„ธ ์ฐจ๋ก€ ๋˜์ ธ ๊ทธ ์ ์ˆ˜์˜ ํ•ฉ๊ณ„๋กœ ์‹ค๋ ฅ์„ ๊ฒจ๋ฃจ๋Š” ๊ฒŒ์ž„์œผ๋กœ, ๋ชจ๋‘๊ฐ€ ๊ฐ„๋‹จํžˆ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
๊ฐ“ ์ž…์‚ฌํ•œ ๋ฌด์ง€๋Š” ์ฝ”๋”ฉ ์‹ค๋ ฅ์„ ์ธ์ •๋ฐ›์•„ ๊ฒŒ์ž„์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์ธ ์ ์ˆ˜ ๊ณ„์‚ฐ ๋กœ์ง์„ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‹คํŠธ ๊ฒŒ์ž„์˜ ์ ์ˆ˜ ๊ณ„์‚ฐ ๋กœ์ง์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  1. ๋‹คํŠธ ๊ฒŒ์ž„์€ ์ด 3๋ฒˆ์˜ ๊ธฐํšŒ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  2. ๊ฐ ๊ธฐํšŒ๋งˆ๋‹ค ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ ์ˆ˜๋Š” 0์ ์—์„œ 10์ ๊นŒ์ง€์ด๋‹ค.
  3. ์ ์ˆ˜์™€ ํ•จ๊ป˜ Single(S), Double(D), Triple(T) ์˜์—ญ์ด ์กด์žฌํ•˜๊ณ  ๊ฐ ์˜์—ญ ๋‹น์ฒจ ์‹œ ์ ์ˆ˜์—์„œ 1์ œ๊ณฑ, 2์ œ๊ณฑ, 3์ œ๊ณฑ (์ ์ˆ˜1 , ์ ์ˆ˜2 , ์ ์ˆ˜3 )์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.
  4. ์˜ต์…˜์œผ๋กœ ์Šคํƒ€์ƒ() , ์•„์ฐจ์ƒ(#)์ด ์กด์žฌํ•˜๋ฉฐ ์Šคํƒ€์ƒ() ๋‹น์ฒจ ์‹œ ํ•ด๋‹น ์ ์ˆ˜์™€ ๋ฐ”๋กœ ์ „์— ์–ป์€ ์ ์ˆ˜๋ฅผ ๊ฐ 2๋ฐฐ๋กœ ๋งŒ๋“ ๋‹ค. ์•„์ฐจ์ƒ(#) ๋‹น์ฒจ ์‹œ ํ•ด๋‹น ์ ์ˆ˜๋Š” ๋งˆ์ด๋„ˆ์Šค๋œ๋‹ค.
  5. ์Šคํƒ€์ƒ()์€ ์ฒซ ๋ฒˆ์งธ ๊ธฐํšŒ์—์„œ๋„ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์Šคํƒ€์ƒ()์˜ ์ ์ˆ˜๋งŒ 2๋ฐฐ๊ฐ€ ๋œ๋‹ค. (์˜ˆ์ œ 4๋ฒˆ ์ฐธ๊ณ )
  6. ์Šคํƒ€์ƒ()์˜ ํšจ๊ณผ๋Š” ๋‹ค๋ฅธ ์Šคํƒ€์ƒ()์˜ ํšจ๊ณผ์™€ ์ค‘์ฒฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ค‘์ฒฉ๋œ ์Šคํƒ€์ƒ(*)์ ์ˆ˜๋Š” 4๋ฐฐ๊ฐ€ ๋œ๋‹ค. (์˜ˆ์ œ 4๋ฒˆ ์ฐธ๊ณ )
  7. ์Šคํƒ€์ƒ(*)์˜ ํšจ๊ณผ๋Š” ์•„์ฐจ์ƒ(#)์˜ ํšจ๊ณผ์™€ ์ค‘์ฒฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ค‘์ฒฉ๋œ ์•„์ฐจ์ƒ(#)์˜ ์ ์ˆ˜๋Š” -2๋ฐฐ๊ฐ€ ๋œ๋‹ค. (์˜ˆ์ œ 5๋ฒˆ ์ฐธ๊ณ )
  8. Single(S), Double(D), Triple(T)์€ ์ ์ˆ˜๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์กด์žฌํ•œ๋‹ค.
  9. ์Šคํƒ€์ƒ, ์•„์ฐจ์ƒ(#)์€ ์ ์ˆ˜๋งˆ๋‹ค ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.
    0~10์˜ ์ •์ˆ˜์™€ ๋ฌธ์ž S, D, T, *, #๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์ด ์ž…๋ ฅ๋  ์‹œ ์ด์ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๋ผ.

์ž…๋ ฅ ํ˜•์‹

  • "์ ์ˆ˜|๋ณด๋„ˆ์Šค|[์˜ต์…˜]"์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด 3์„ธํŠธ.
    ์˜ˆ) 1S2D*3T
  • ์ ์ˆ˜๋Š” 0์—์„œ 10 ์‚ฌ์ด์˜ ์ •์ˆ˜์ด๋‹ค.
  • ๋ณด๋„ˆ์Šค๋Š” S, D, T ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
  • ์˜ต์„ ์€ *์ด๋‚˜ # ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค.

์ถœ๋ ฅ ํ˜•์‹

3๋ฒˆ์˜ ๊ธฐํšŒ์—์„œ ์–ป์€ ์ ์ˆ˜ ํ•ฉ๊ณ„์— ํ•ด๋‹นํ•˜๋Š” ์ •์ˆ˜๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.
์˜ˆ) 37

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

์˜ˆ์ œdartResultanswer์„ค๋ช…
11S2D*3T371^1 x 2 + 2^2 x 2 + 3^3
21D2S#10S91^2 + 2^1 x (-1) + 10^1
31D2S0T31^2 + 2^1 + 0^3
41S2T3S231^1 x 2 x 2 + 2^3 x 2 + 3^1
51D#2S*3S51^2 x (-1) x 2 + 2^1 x 2 + 3^1
61T2D3D#-41^3 + 2^2 + 3^2 x (-1)
71D2S3T*591^2 + 2^1 x 2 + 3^3 x 2

์ฝ”๋“œ

function solution(dartResult) {
    let dart = dartResult.split('');
    let score = 0, record = 0, result = 0
    for(let i = 0; i < dart.length; i++){
        if(dart[i] == 'S' || dart[i] == 'D' || dart[i] == 'T'){
            if(dart[i] == 'S'){
                score = Math.pow(score, 1)
            }else if(dart[i] == 'D') {
                score = Math.pow(score, 2)
            }else{
               score = Math.pow(score, 3)
           } 
        }else if(dart[i] == '*' || dart[i] == '#'){
            if(dart[i] == '*'){
                score *= 2
                result += record 
              	// ์ „๊นŒ์ง€์˜ ์ ์ˆ˜๋ฅผ ํ•œ๋ฒˆ๋” ๋”ํ•จ์œผ๋กœ *2์˜ ํšจ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.
            }else{
                score *= (-1)
            }
            record = 0
        }else {
            result += score // ์ˆซ์ž๊ฐ€ ๋“ค์–ด์˜ฌ๋•Œ ์ด์ „๊นŒ์ง€์˜ ๊ณ„์‚ฐ ์ €์žฅ 
            record = score // *์ผ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•จ์œผ๋กœ ์ €์žฅ
            if(dart[i] == '1' && dart[i+1] == '0'){
                score = 10 
              	// ์ˆซ์ž๊ฐ€ 10๊นŒ์ง€์ด๋ฏ€๋กœ ๋‘์ž๋ฆฟ์ˆ˜๋Š” 10๋ฐ–์— ์—†์Œ
                ++i // 10์€ ์ˆซ์ž๊ฐ€ ๋‘์ธ๋ฑ์Šค๋ฅผ ์ฐจ์ง€ํ•จ์œผ๋กœ ์ธ๋ฑ์Šค์— 1์„ ๋”ํ•ด์ค€๋‹ค.
            }else{
                score = Number(dart[i])
            }
        }
    }
    result += score // ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ณ„์‚ฐ๋œ๊ฒŒ ์ ์šฉ์ด ๋˜์ง€ ์•Š์•„์„œ ๋”ฐ๋กœ ์ €์žฅ
    
    return result
}
profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€