์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- BFS
- Xcode
- BOJ
- Kuring
- CollectionView
- raywenderlich
- Swfit
- arkit
- ๋ฐฑ์ค
- visionOS
- XCTest
- Lv2
- SwiftUI
- SnapKit
- ios
- ํ๋ก๊ทธ๋๋จธ์ค
- rxcocoa
- reactorkit
- realm
- TCA
- RxSwift
- tableView
- node.js
- ํจ์คํธ์บ ํผ์ค
- MVVM
- UIKit
- combine
- designpattern
- Flutter
- swift
- Today
- Total
lgvv98
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV2. ๋ฐฉ๋ฌธ ๊ธธ์ด ๋ณธ๋ฌธ
ํ๋ก๊ทธ๋๋จธ์ค 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
}
}
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV2. ์์ ์ต๋ํ (0) | 2022.04.16 |
---|---|
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV2. [3์ฐจ] ํ์ผ๋ช ์ ๋ ฌ (0) | 2022.04.16 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV2. ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (0) | 2022.04.16 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV2. ํฐ ์ ๋ง๋ค๊ธฐ (4) | 2022.04.13 |
[Swift] ํ๋ก๊ทธ๋๋จธ์ค LV2. ์ฟผ๋ ์์ถ ํ ๊ฐ์ ์ธ๊ธฐ (0) | 2022.04.13 |