import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()," "); System.out.print(st.countTokens()); } } StringTokenizer์๋ count..
์ ์ฒด ๊ธ
UIKit์ผ๋ก ๊ฐ๋ฐํ๋ค๊ฐ ํ์ฌ๋ SwiftUI๋ก ์๋น์ค ๊ฐ๋ฐํ๊ณ ์๋ Fram์ ๋๋ค SwiftUI์ Combine์ ๋ํด ์๊ฒ ๋ ๊ฒ๊ณผ ๊ธฐ์ ์ ๊ณต์ ํ๋ ๋ธ๋ก๊ทธ ์ ๋๋ค. ์ฃผ์ : ์ ์๋๊ฑฐ ๋ ์ ์ ์ ์์public static int search(int[] nums, int target) { int start = 0, end = nums.length - 1; while(start
https://usevia.app/ VIA Your keyboard's best friend usevia.app ๋ณ๋ ํ๋ก๊ทธ๋จ์ ๋ค์ด๋ก๋ํ์ง ์๊ณ ์น ํ์ด์ง์์ ํค ๋งตํ ํ ์ ์์ด์. ํฌ๋กฌ์ ๊ถ์ฅํ๋ค๊ณ ํ๋๋ฐ ๊ฐ์ ๊ณ์ด์ธ ์จ์ผ์์๋ ์ ๋์ํฉ๋๋ค! ๋งตํํ ํค๋ฅผ ๋๋ฅธ ๋ค์, ์ค์ ํ๊ธธ ์ํ๋ ํค๋ฅผ ๋๋ฌ์ฃผ๋ฉด ๋ฉ๋๋ค! ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ฐ์ ๋งคํฌ๋ก๋ฅผ ์์ฑํด ์ฃผ์ด์ผ ํฉ๋๋ค. ๊ฐ์ฅ ์ผ์ชฝ์ MACROS๋ฅผ ๋๋ฌ์ฃผ์ธ์. ์ง์ ํ ๋งคํฌ๋ก ๋ฒํธ๋ฅผ ๋๋ฌ์ฃผ๊ณ ๋ฒํผ์ ๋๋ฌ ์ค๋๋ค. ์ค๊ดํธ๋ฅผ ์ด์ด์ฃผ์๊ณ ์ง์ ํ ํค ์ด๋ฆ์ ์
๋ ฅํ๋ฉด VIA์์ ์ฌ์ฉํ๋ ๋จ์ถ์ด๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋งฅ์์ ์ปค๋ฉ๋๋ Left Winow ํค์ ๋์ผํ๊ธฐ ๋๋ฌธ์ Ctl + C๋ฅผ ์ง์ ํ๋ ค๋ฉด KC_LCUI, KC_C ๋ ๊ฐ๋ฅผ ์ง์ ํด ์ฃผ๋ฉด ๋์. Save ๋ฒํผ์ ๋ฐ๋์..
SwiftUI์์ ํ๋จ ํญ๋ฐ๋ฅผ ๊ตฌํํ๊ณ ์ถ์ ๋ TabView๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ํ๋จ ํญ๋ฐ ๋ฟ๋ง ์๋๋ผ ์บ๋ฌ์
์คํฌ๋กค ๋ทฐ (์๋ฅผ ๋ค์ด ๋ฐฐ๋)๋ TabView๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ํญ ์์ดํ
์ด ์๋ ์ปค์คํ
TabView๋ฅผ ๊ตฌํํ์ ๋ ํ๋จ์ ์๋์ผ๋ก ์๊ธฐ๋ More์ ์ ๊ฑฐ ํ๊ณ ์ถ์ผ๋ฉด tabViewStyle modifier๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. TabView(selection: viewStore.$selectedCategoryID) { // ์๋ต } .tabViewStyle(.page(indexDisplayMode: .never))
NavigationStack๊ณผ NavigationSplitView์์ ๋ทฐ ์ด๋์ ์ํด NavigationLink๋ฅผ ์ฌ์ฉํ ์ ์๋ค. struct Fruit: Identifiable, Hashable { var id = UUID() let name: String let emoji: String func hash(into hasher: inout Hasher) { hasher.combine(name) } } ๋ฆฌ์คํธ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ ์ struct FruitDetailView: View { let fruit: Fruit var body: some View { VStack { Text(fruit.emoji) .font(.largeTitle) Text(fruit.name) } } } ๋ฐ์ดํฐ ..
๋ณดํธ๋์ด ์๋ ๊ธ์
๋๋ค.
Reduce // Reduce initializer @inlinable public init(_ reduce: @escaping (_ state: inout State, _ action: Action) -> Effect) { self.init(internal: reduce) } Reduce๋ Effect์ ๋ฐํํ๋ ํด๋ก์ ธ๋ฅผ ๊ฐ์ง๊ณ ์์ Effect์ ์ฌ์ฉํด์ ์ํ๋ฅผ ๊ด๋ฆฌ Reducer ๋ด๋ถ์์ State๋ฅผ ๋ณํํ๊ณ ๊ด๋ฆฌ Effect๋ฅผ Application์ ํผ๋๋ฐฑ (Side Effect) -> Reducer ๋ด๋ถ์์ Reduce๋ฅผ ๊ฐ์ง๊ณ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค. ์ด๋ effect๋ฅผ ์ผ์ผ์ผ ํผ๋๋ฐฑ์ ํ ์ ์๋๋ฐ ์ด๋ฅผ side effect๋ผ๊ณ ํ๋ค. .run Reduce๋ Effect์ ๋ฐํํด์ผ ํ๋ค public..
๋๊ธฐ & ๋น๋๊ธฐ synchronous๋ ์์
์ ๋๊ธฐ์ ์ผ๋ก ์คํ. ์คํ ์ค์ธ ์์
์ด ๋๋ ๋ ๊น์ง ๋ค๋ฅธ ์์
์ ๊ธฐ๋ค๋ฆผ asynchronous๋ ๋น๋๊ธฐ๋ก ํ์ฌ ์คํ ์ค์ธ ์์
์ด ์์ด๋ ๋ค๋ฅธ ์์
์ ์คํ ํ ์ ์๋ค. ์ค๋ ๊ฑธ๋ฆฌ๋ ์์
์ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํด์ ๋ฉ์ธ ์ค๋ ๋์์ ํ์๋ก ํ๋ ์์
์ด ๋ฉ์ถ์ง ์๊ฒ ํ๋ค. MainActor UI ๊ด๋ จ ์์
์ ๋ฉ์ธ ์ค๋ ๋์์ ์คํ๋์ด์ผ ํ๋๋ฐ, MainActor๋ ์ด๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋ค. UI ์
๋ฐ์ดํธ์ ๊ด๋ จ๋ ์์
์ ๋ฉ์ธ ์ค๋ ๋์์ ์คํํ๋๋ก ๋ณด์ฅํ๋ค. ๋น๋๊ธฐ ์์
์์ ๋ฉ์ธ ์ค๋ ๋๋ก์ ์ ๊ทผ์ ์์ ํ๊ฒ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ค๋ ๋ ์์ ์ ์ด๋ฉฐ DispatchQueue.main.async์ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํ ํ์๊ฐ ์์ด ๊ฐ๊ฒฐํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค. struct Def..