Notice
Recent Posts
Recent Comments
Link
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

lgvv98

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV2. ๋ฐฉ๋ฌธ ๊ธธ์ด ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV2. ๋ฐฉ๋ฌธ ๊ธธ์ด

๐Ÿฅ• ์บ๋Ÿฟ๋งจ 2022. 4. 16. 12:42

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV2. ๋ฐฉ๋ฌธ ๊ธธ์ด

 

โœ… ์‰ฌ์› ๋‹ค. 

๋ฌธ๋“ ๋“œ๋Š” ์ƒ๊ฐ์ธ๋ฐ, ์ด๋ ‡๊ฒŒ ์ž˜ ํ’€๋ฆฌ๋Š” ๋ฌธ์ œ๋งŒ ํ‘ธ๋Š”๊ฒŒ ๋„์›€์ด ๋ ๊นŒ ์‹ถ๋‹ค.. ใ… 

 

๐ŸŸ  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ‘๊ทผ ๋ฐ ํ’€์ด์˜ ํ๋ฆ„์‚ฌ์‹ค ๋‚œ์ด๋„ ์ž์ฒด๋Š” ์‰ฌ์šด๋ฐ +9์ ์ด๋‚˜ ๋ฐ›์•˜๋‹ค. ์นด์นด์˜ค ๋ฌธ์ œ๊ฐ€ ๋” ๊นŒ๋‹ค๋กœ์› ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ..?

 

1. ์ฒ˜์Œ์—๋Š” point = (x,y)๋กœ ๋‘์–ด์„œ ๋ฐฉ๋ฌธํ•œ point๋ฅผ ์žฌ๋ฐฉ๋ฌธ ์•ˆํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌ ๋ฌธ์ œ์ : (5,5) -> (4,5)์™€ (4,4) -> (4,5)๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†์–ด์„œ ๋ฌธ์ œ ํ’€์ด์˜ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

 

2. ์‹œ์ž‘์ ๊ณผ ๋„์ฐฉ์ ์„ ์ „๋ถ€ ์ €์žฅํ•˜๊ฒŒ๋” ๋ณ€๊ฒฝpreviousPoint, currentPoint = (5,5,4,5) ์ด๋Ÿฐ ์‹์œผ๋กœ ์ €์žฅ๋”ฐ๋ผ์„œ ์–ด๋””์—์„œ ์–ด๋””๋กœ ๊ฐ€๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์ง๋ฌธ์ œ์  : ์™”๋‹ค๊ฐ”๋‹ค์˜ ๊ฒฝ์šฐ ์ค‘๋ณต์œผ๋กœ ์ฒดํฌ๊ฐ€ ๋œ๋‹ค.์˜ˆ์‹œ (4,5,5,5) (5,5,4,5)์˜ ๊ฒฝ์šฐ ์‚ฌ์‹ค์ƒ ๋™์ผ ๊ตฌ๊ฐ„ ์™•๋ณต์ด๋‚˜ 2ํšŒ๋กœ ์ €์žฅ๋œ๋‹ค.ํ…Œ์ŠคํŠธ์ผ€์ด์Šค : "LRLR" ์ •๋‹ต: 1 

 

3. ์‹œ์ž‘์  -> ๋์ , ๋์  -> ์‹œ์ž‘์  ๋‘๊ฐœ๋ฅผ ๋™์‹œ ๋น„๊ตํ•˜์—ฌ ์ค‘๋ณต์„ ์—†์•ฐ์ด ๋ถ€๋ถ„์€ visited.contains๋ถ€๋ถ„์—์„œ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ์•ฝ๊ฐ„๋งŒ ํ•ด์„คํ•˜์ž๋ฉด, check ๋˜๋Š” check2 ์ค‘ ์–ด๋Š ๊ฒƒ์ด๋ผ๋„ ๋“ค์–ด์žˆ๋‹ค๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์—ฌ๊ธฐ์— not์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ตœ์ข…์ ์œผ๋กœ๋Š” ๋‘˜์ค‘ ์–ด๋Š๊ฒƒ๋„ ๋“ค์–ด์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ์— visited.append๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

 

 

 

โœ… ์ฝ”๋“œ

//
//  49994.swift
//  Algorithm
//
//  Created by Hamlit Jason on 2022/04/16.
//
//https://programmers.co.kr/learn/courses/30/lessons/49994
import Foundation

struct p49994 {
    static func run() {
//        print(p49994.solution("LULLLLLLU")) // 7
//        print(p49994.solution("ULURRDLLU")) // 7
//        print(p49994.solution("UUUUDUDUDUUU")) // 5
        print(p49994.solution("LRLR")) // 1
    }
    
    static func solution(_ dirs:String) -> Int {
        
        var visited: [(Int, Int, Int, Int)] = [(5,5,5,5)] // (x,y) ์‹œ์ž‘์  -> (x,y) ๋์  ๋ฃจํŠธ ์ž์ฒด๋ฅผ ์ €์žฅํ•˜์ž.
        
        var previousPoint = (5,5)
        var currentPoint = (5,5)
        
        var x = currentPoint.0
        var y = currentPoint.1
        
        for dir in dirs {
            switch dir {
            case "U":
                if y - 1 < 0 { // ํŒ์„ ๋„˜์–ด๊ฐ€๋ฉด
                    continue
                } else {
                    y -= 1
                }
                break
            case "L":
                if x - 1 < 0 {
                    continue
                } else {
                    x -= 1
                }
                break
            case "R":
                if x + 1 > 10 {
                    continue
                } else {
                    x += 1
                }
                break
            case "D":
                if y + 1 > 10 {
                    continue
                } else {
                    y += 1
                }
                break
            default: print("Default")
            }
            
            currentPoint = (x,y)
            let check = (previousPoint.0, previousPoint.1, currentPoint.0, currentPoint.1)
            let check2 = (currentPoint.0, currentPoint.1, previousPoint.0, previousPoint.1)
            previousPoint = currentPoint
            
            if !visited.contains(where: {
                return $0 == check || $0 == check2
            }) {
                visited.append(check)
            }
        }
        
        print(visited)
        return visited.count - 1
    }
}
Comments