Search
Duplicate

Arrays and ArrayLists

ํƒœ๊ทธ
๋ฐฐ์—ด
๊ตฌ๋ถ„
์ฝ”๋ฐ์นด๋ฐ๋ฏธ

Arrays

์ถœ๋ ฅ๋น„๊ต
[์˜ˆ์‹œ ์ฝ”๋“œ]
public class Newsfeed { public Newsfeed(){ } // Create getTopics() below: public String[] getTopics() { String[] topics = {"Opinion", "Tech", "Science", "Health"}; return topics; } public static void main(String[] args){ Newsfeed sampleFeed = new Newsfeed(); String[] topics = sampleFeed.getTopics(); System.out.println(topics); } }
Java
๋ณต์‚ฌ
Output
[Ljava.lang.String;@2aae9190
[์˜ˆ์‹œ ์ฝ”๋“œ]
// import the Arrays package here: import java.util.Arrays; public class Newsfeed { public Newsfeed(){ } public String[] getTopics(){ String[] topics = {"Opinion", "Tech", "Science", "Health"}; return topics; } public static void main(String[] args){ Newsfeed sampleFeed = new Newsfeed(); String[] topics = sampleFeed.getTopics(); System.out.println(Arrays.toString(topics)); } }
Java
๋ณต์‚ฌ
Output
[Opinion, Tech, Science, Health]
์ฒซ๋ฒˆ์งธ ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๊ฒฐ๊ณผ๋ฌผ๋กœ ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๊ฐ€ ๋‚˜์˜จ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ์ด ์ฃผ์†Œ ๋ง๊ณ  ๋ฐฐ์—ด ๊ทธ ์ž์ฒด๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?
์ž๋ฐ”์˜ Arrays ํŒจํ‚ค์ง€์— ์˜ํ•ด ์ œ๊ณต๋˜๋Š” toString() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ธฐ ์ „์— import java.util.Arrays; ๋ฅผ ์ ์–ด์•ผํ•œ๋‹ค.
Arrays ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Arrays.toString() ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๋‘๋ฒˆ์งธ ์ฝ”๋“œ์˜ ์ถœ๋ ฅ๋ฌธ์„ ๋ณด๋ฉด ์ด์ „๊ณผ ๋‹ฌ๋ฆฌ ๋ฐฐ์—ด ๊ทธ ์ž์ฒด๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
Creating an Empty Array
๋น„์–ด์žˆ๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
[๋ฐฐ์—ด ์š”์†Œ์˜ ๋ฐ์ดํ„ฐํƒ€์ž…][] [๋ฐฐ์—ด์ด๋ฆ„] = new [๋ฐฐ์—ด ์š”์†Œ์˜ ๋ฐ์ดํ„ฐํƒ€์ž…][๋ฐฐ์—ด์˜ํฌ๊ธฐ];
Java
๋ณต์‚ฌ
์˜ˆ)
๋งŒ์•ฝ ๋ฐฐ์—ด์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ์š”์†Œ๋“ค์˜ ํƒ€์ž…์ด double ํ˜• ์ด๋ผ๋ฉด
double[] arr = new double[5];
๋งŒ์•ฝ ๋ฐฐ์—ด์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ์š”์†Œ๋“ค์˜ ํƒ€์ž…์ด String ํ˜• ์ด๋ผ๋ฉด
String[] arr = new String[5];

๋งŒ์•ฝ ์ธ์Šคํ„ด์Šค ์˜์—ญ์— ์žˆ๋Š” ๋ฐฐ์—ด์„ ์ดˆ๊ธฐํ™” ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

[์˜ˆ์‹œ ์ฝ”๋“œ]
import java.util.Arrays; public class Newsfeed { String[] topics = {"Opinion", "Tech", "Science", "Health"}; int[] views = {0, 0, 0, 0}; String[] favoriteArticles; public Newsfeed(){ // Initialize favoriteArticles here: favoriteArticles = new String[10]; } ...
Java
๋ณต์‚ฌ
favoriteArticles ๋ฅผ new ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ํฌ๊ธฐ๊ฐ€ 10์ธ ๋ฐฐ์—ด๋กœ ์ดˆ๊ธฐํ™” ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ณผ๋“œ์ฒด์™€ ๊ฐ™์ด ์ด๋ฆ„ = new String[ํฌ๊ธฐ]; ์˜ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ธ์Šคํ„ด์Šค ์˜์—ญ์—์„œ ์ด๋ฏธ ๋ฐฐ์—ด์ž„์„ ์•Œ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— String[] ์„ ๋„ฃ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋งŒ์•ฝ ๋„ฃ๊ฒŒ ๋˜๋ฉด java.lang.NullPointerException ์—๋Ÿฌ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค
์ด์ฒ˜๋Ÿผ new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์–ด์žˆ๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค ๋•Œ, ๊ฐ๊ฐ์˜ ์š”์†Œ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋”ฐ๋ผ ํŠน์ •ํ•œ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค.
Data Type
Initialized Value
Date type
Initialized Value
byte
0
double
0.0d
short
0
char
โ€˜\n0000โ€™
int
0
boolean
false
long
OL
์ฐธ์กฐํ˜•๋ณ€์ˆ˜ (String or any Object)
null
float
0.0f
String[] args
๋ฉ”์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์“ธ ๋•Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ String[] args ๋ฅผ ์“ด๋‹ค. ์ฆ‰ args ๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋ฐฐ์—ด์ธ๋ฐ, ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์–ด๋–ค๊ฐ’์„ ๋ฐฐ์—ด๋กœ ๊ฐ€์งˆ๊นŒ? args ๋Š” ํด๋ž˜์Šค ํŒŒ์ผ์„ ์‹คํ–‰ํ•  ๋•Œ ํ„ฐ๋ฏธ๋„์—์„œ ์ „๋‹ฌ๋ฐ›์€ argument ๋ฅผ ๋ฐฐ์—ด๊ฐ’์œผ๋กœ ๊ฐ€์ง„๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ argument ๋ฅผ ์ „๋‹ฌ ๋ฐ›์„ ์ˆ˜ ์žˆ์„๊นŒ?
[์˜ˆ์‹œ ์ฝ”๋“œ]
public class HelloYou { public static void main(String[] args) { System.out.println("Hello " + args[0]); } }
Java
๋ณต์‚ฌ
HelloYou ๋ผ๋Š” ํด๋ž˜์Šค ํŒŒ์ผ์ด๋‹ค. ๋งŒ์•ฝ ํ„ฐ๋ฏธ๋„์—์„œ ์ด ํŒŒ์ผ์„ ์‹คํ–‰ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.
์ด๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŒŒ์ผ์„ ์‹คํ–‰ ํ•œ๋‹ค๋ฉด,
java <class ํŒŒ์ผ ์ด๋ฆ„> <args[0]> | java HelloYou Laura
์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ๊ฒƒ์ด๋‹ค.
Hello Laura
์ฆ‰, argument ๋กœ ๋„ฃ์€ Laura๊ฐ€ args ๋ฐฐ์—ด์˜ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์ด ๋œ ๊ฒƒ์ด๋‹ค.
์ฝ˜์†”
์„œ๋ฒ„์˜ ๋กœ์ปฌ ์žฅ์น˜์—์„œ ์ง์ ‘ ๋ช…๋ น์–ด๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ž…์ถœ๋ ฅ ์žฅ์น˜์ด๋‹ค.
์ดํด๋ฆฝ์Šค๋‚˜ ์ธํ…”๋ฆฌ์ œ์ด ์—์„œ ์•„๋ž˜์— ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ์ฐฝ์ด ์žˆ์ง€ ์•Š์€๊ฐ€? ๊ทธ๊ฒƒ์„ ์ฝ˜์†”์ด๋ผ๊ณ  ํ•œ๋‹ค!
ํ„ฐ๋ฏธ๋„
์„œ๋ฒ„์˜ ๋กœ์ปฌ ๋˜๋Š” ์›๊ฒฉ์œผ๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ˜์†”์„ ๊ตฌํ˜„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด
command ๋ฅผ ์ž…๋ ฅํ•˜๋Š” shell ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.
์‰˜
์‹ค์ œ๋กœ ๋ช…๋ น์–ด๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š” ํ”„๋กœ๊ทธ๋žจ

ArrayLists

Creating ArrayLists
ArrayList ๋ฅผ ์„ ์–ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
ArrayList<๋ณ€์ˆ˜์˜ ํƒ€์ž…> [๋ฐฐ์—ด์˜ ์ด๋ฆ„];
[์˜ˆ์‹œ ์ฝ”๋“œ]
// Declaring: ArrayList<Integer> ages; // Initializing: ages = new ArrayList<Integer>(); // Declaring and initializing in one line: ArrayList<String> babyNames = new ArrayList<String>();
Java
๋ณต์‚ฌ
ArrayList ๋ฅผ ์‚ฌ์šฉํ• ๋•Œ java.util.ArrayList ๋ฅผ import ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ ์žŠ์ง€๋ง์ž!
ArrayList ์™€ Array ์—์„œ ๋ณ€์ˆ˜ ํƒ€์ž…์€ ๋‹ค๋ฅด๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
Array
ArrayList
int
Integer
double
Double
char
Char
String
String
Adding an Item
๋น„์–ด์žˆ๋Š” ArrayList ์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
[ArrayList ์ด๋ฆ„].add(์š”์†Œ);
[์˜ˆ์‹œ ์ฝ”๋“œ]
ArrayList<Car> carShow = new ArrayList<Car>(); carShow.add(ferrari); // carShow now holds [ferrari] carShow.add(thunderbird); // carShow now holds [ferrari, thunderbird] carShow.add(volkswagen); // carShow now holds [ferrari, thunderbird, volkswagen]
Java
๋ณต์‚ฌ
Array ์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•ด ์ค„ ํ•„์š”๊ฐ€ ์—†์ด ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
๋งŒ์•ฝ ํŠน์ • ์ธ๋ฑ์Šค์— ํŠน์ •๊ฐ’์„ ์ง€์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด? ๊ทธ๋Ÿด๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
[์˜ˆ์‹œ ์ฝ”๋“œ]
ArrayList<Car> carShow = new ArrayList<Car>(); carShow.add(ferrari); // carShow now holds [ferrari] carShow.add(thunderbird); // carShow now holds [ferrari, thunderbird] carShow.add(volkswagen); // carShow now holds [ferrari, thunderbird, volkswagen] // Insert object corvette at index 1 carShow.add(1, corvette); // carShow now holds [ferrari, corvette, thunderbird, volkswagen] // Insert object porsche at index 2 carShow.add(2, porsche); // carShow now holds [ferrari, corvette, porsche, thunderbird, volkswagen]
Java
๋ณต์‚ฌ
ArrayList Size
ArrayList ์•ˆ์— ์š”์†Œ๊ฐ€ ๋ช‡๊ฐœ ์žˆ๋Š”์ง€ ์•Œ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ์ด๋•Œ size() ๋ฉ”์„œ๋“œ๋ฅผ ์“ฐ์ž!
[ArrayList ๋ช…].size();
[์˜ˆ์‹œ ์ฝ”๋“œ]
ArrayList<String> shoppingCart = new ArrayList<String>(); shoppingCart.add("Trench Coat"); System.out.println(shoppingCart.size()); // 1 is printed shoppingCart.add("Tweed Houndstooth Hat"); System.out.println(shoppingCart.size()); // 2 is printed shoppingCart.add("Magnifying Glass"); System.out.println(shoppingCart.size()); // 3 is printed
Java
๋ณต์‚ฌ
ArrayList ์™€ ๊ฐ™์€ dynamic object ์—์„œ๋Š” ์ €์žฅ๋œ ๊ฐ์ฒด์˜ ์–‘์ด ์–ผ๋งˆ์ธ์ง€ ์•„๋Š”๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค
Accessing an Index
ArrayList ์—์„œ ํŠน์ •ํ•œ index ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด get() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค.
[ArrayList ๋ช…].get(indexNumber);
์šฐ๋ฆฌ๊ฐ€ ์–ป๊ฒŒ๋˜๋Š” ๊ฒƒ์€ index Number ๊ฐ€ ์•„๋‹Œ ํ•ด๋‹น index ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’์ด๋‹ค.
Changing a Value
Array ์—์„œ์˜ ๋ณ€์ˆ˜๊ฐ’ ๋ณ€๊ฒฝ
[์˜ˆ์‹œ ์ฝ”๋“œ]
String[] shoppingCart = {"Trench Coat", "Tweed Houndstooth Hat", "Magnifying Glass"}; shoppingCart[0] = "Tweed Cape"; // shoppingCart now holds ["Tweed Cape", "Tweed Houndstooth Hat", "Magnifying Glass"]
Java
๋ณต์‚ฌ
๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝ์„ ์›ํ•˜๋Š” ์ธ๋ฑ์Šค๋ฒˆํ˜ธ๋ฅผ ๊ฐ™์ด ์ ์–ด์ค˜์•ผ ํ•œ๋‹ค.
ArrayList ์—์„œ์˜ ๋ณ€์ˆ˜๊ฐ’ ๋ณ€๊ฒฝ
[์˜ˆ์‹œ ์ฝ”๋“œ]
ArrayList<String> shoppingCart = new ArrayList<String>(); shoppingCart.add("Trench Coat"); shoppingCart.add("Tweed Houndstooth Hat"); shoppingCart.add("Magnifying Glass"); shoppingCart.set(0, "Tweed Cape"); // shoppingCart now holds ["Tweed Cape", "Tweed Houndstooth Hat", "Magnifying Glass"]
Java
๋ณต์‚ฌ
Array ์™€ ๋‹ค๋ฅด๊ฒŒ set() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
[ArrayList ๋ช…].set(indexNumber, ์ƒˆ๋กœ์šด๊ฐ’);
Removing an Item
Array ์—์„œ ํŠน์ •ํ•œ ์š”์†Œ๋ฅผ ์ง€์šฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  ๊ฐ’๋“ค์„ ์˜ฎ๊ฒจ์ค˜์•ผ ํ•œ๋‹ค.
ํ•˜์ง€๋งŒ ArraryList ๋Š” ํŠน์ • ์š”์†Œ๋ฅผ ์ง€์šฐ๋Š” ๊ฒƒ์ด ๊ฐ„ํŽธํ•˜๋ฉฐ, ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
remove ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ
[ArrayList ๋ช…].remove(indexNumber, ์ƒˆ๋กœ์šด๊ฐ’);
[์˜ˆ์‹œ ์ฝ”๋“œ]
ArrayList<String> shoppingCart = new ArrayList<String>(); shoppingCart.add("Trench Coat"); shoppingCart.add("Tweed Houndstooth Hat"); shoppingCart.add("Magnifying Glass"); shoppingCart.remove(1); // shoppingCart now holds ["Trench Coat", "Magnifying Glass"]
Java
๋ณต์‚ฌ
1๋ฒˆ ์ธ๋ฑ์Šค์˜ ๊ฐ’์ธ Tweed Houndstooth Hat ์ด ์ง€์›Œ์กŒ๋‹ค.
ํŠน์ •ํ•œ ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘ ์ œ์‹œ
[์˜ˆ์‹œ ์ฝ”๋“œ]
ArrayList<String> shoppingCart = new ArrayList<String>(); shoppingCart.add("Trench Coat"); shoppingCart.add("Tweed Houndstooth Hat"); shoppingCart.add("Magnifying Glass"); shoppingCart.remove("Trench Coat"); // shoppingCart now holds ["Tweed Houndstooth Hat", "Magnifying Glass"]
Java
๋ณต์‚ฌ
๊ฐ’์˜ ์ฒซ๋ฒˆ์งธ ์ธ์Šคํ„ด์Šค์ธ Trench Coat ์ด ์ง€์›Œ์กŒ๋‹ค.

์ง€์›Œ์ง„๊ฒƒ์— ๋Œ€ํ•œ ์„œ์ˆ ์ด ๋‹ค๋ฅด๋‹ค

Getting an Item's Index
๋งŒ์•ฝ ํŠน์ • ์š”์†Œ์˜ ์ธ๋ฑ์Šค ๋„˜๋ฒ„๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? ์•„๋ž˜์˜ ๊ตฌ๋ฌธ์„ ์ด์šฉํ•˜์ž
[ArrayList ๋ช…].indexOf(์š”์†Œ);
[์˜ˆ์ œ ์ฝ”๋“œ]
// detectives holds ["Holmes", "Poirot", "Marple", "Spade", "Fletcher", "Conan", "Ramotswe"]; System.out.println(detectives.indexOf("Fletcher"));
Java
๋ณต์‚ฌ
์œ„์˜ ์ฝ”๋“œ๋Š” 4 ๋ฅผ ์ถœ๋ ฅํ•  ๊ฒƒ์ด๋‹ค.
๊ทธ ์™ธ ๋ฉ”์„œ๋“œ
.sublist(start index, end index);
์›ํ•˜๋Š” ๊ตฌ๊ฐ„์˜ ๊ฐ’๋“ค์„ ์ถœ๋ ฅํ•ด์ค€๋‹ค. end index ๋Š” ๋‚ด๊ฐ€ ๋งˆ์ง€๋ง‰ ๊ตฌ๊ฐ„์œผ๋กœ ์›ํ•˜๋Š” ๊ณณ์˜ index number ์— 1 ์„ ๋”ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•˜์ž!
.contains();
() ์•ˆ์— ์žˆ๋Š” ๊ฐ’์ด ๋ฐฐ์—ด์— ์žˆ๋Š”์ง€ ๋น„๊ตํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.
๐€๐ซ๐ซ๐š๐ฒ๐ฌ ๐š๐ง๐ ๐€๐ซ๐ซ๐š๐ฒ๐‹๐ข๐ฌ๐ญ๐ฌ