๋ฒ๋ธ์ ๋ ฌ(O(N^2))
์ ์ซ์๋ฅผ ๋น๊ตํด ๋ ํฐ ๊ฒ์ด ๋ค๋ก ๊ฐ๊ฒ ์ค์ ํ๋ ์๊ณ ๋ฆฌ์ฆ
arr.length - 1๋ฒ ๋ฐ๋ณต (n-1)๋ฒ
๋ฒ๋ธ์ ๋ ฌ step1
public class BubbleSort01 {
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28, 11};
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
System.out.println(Arrays.toString(arr));
}
}
๋ฒ๋ธ์ ๋ ฌ step2
public class BubbleSort01 {
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28, 11};
for (int i = 0; i < arr.length - 1; i++) {
if(arr[0] > arr[1]){
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
}
}
}
if๋ฌธ๊ณผ for๋ฌธ์ ์ถ๊ฐํ์ฌ ์กฐ๊ฑด์ ์ถฉ์กฑํ ์ ๋ฐ๋๋ ๊ฑธ๋ก ์์ ( ํน์ ์กฐ๊ฑด์ ์ถฉ์กฑํ ์ swap )
๋ฒ๋ธ์ ๋ ฌ step3
public class BubbleSort01 {
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28};
for (int i = 0; i < arr.length-1; i++) {
if(arr[i]>arr[i+1]){
int temp=arr[i];
arr[i]= arr[i+1];
arr[i+1]=temp;
}
}System.out.println(Arrays.toString(arr));
}
}
์ฌ๊ธฐ์ arr ๋ฐฐ์ด ๋ง์ง๋ง์ 1์ ์ถ๊ฐํด๋ณด๋ฉด ์๊ฒ ์ง๋ง 1์ด ๋งจ ์์ ์ค์ง ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ์์ ํ ๋๊น์ง ๋น๊ต๋ฅผ ํ์ง๋ ์์ ์ํ์ด๋ค.
๋ฒ๋ธ์ ๋ ฌ step4
public class BubbleSort01 {
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28, 1};
for (int j = 0; j < arr.length - 1; j++) {
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
for๋ฌธ์ ํ๋ฒ ๋ ์ถ๊ฐํ์ฌ ๋ง์ง๋ง 1๊น์ง loop ๋์ ์ ๋ ฌ๋ ์ ์๋๋ก ํ๋ค.
๋ฒ๋ธ์ ๋ ฌ step5 ( ์ฌ๊ธฐ์ ๊ฐ์ ํ ์ )
๋ง์ง๋ง์ ๋นผ๊ณ ๋๋ ค๋ ๋จ ์ด์ฐจํผ ๊ฐ์ฅ ํฐ ์ซ์๋ผ
public class BubbleSort02 { //๊ธฐ์กด ์ฝ๋์์ ๊ฐ์ ์ ์ผ๋ก ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ์ ์คํ๊ณ ๋๋ฆฌ๋ ๊ฒ
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28, 1};
for (int j = 1; j < arr.length; j++) {
for (int i = 0; i < arr.length - j; i++) { //arr.length-1
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
OOP๋ก ๋ง๋ค๊ธฐ step1
import java.util.Arrays;
public class BubbleSort02 {
public int[] sortARound(int[] arr){
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
return arr;
}
public static void main(String[] args) {
BubbleSort02 bubbleSort02 = new BubbleSort02();
int[] arr = {7, 2, 3, 9, 28, 1};
for (int j = 1; j <= arr.length; j++) {
arr = bubbleSort02.sortARound(arr);
}
System.out.println(Arrays.toString(arr));
}
}
OOP๋ก ๋ง๋ค๊ธฐ step2
public class BubbleSortOOP {
public int[] sortARound(int[] arr, int until) {
for (int i = 0; i < until; i++) {
if(arr[i] > arr[i+1]){
int temp=arr[i+1];
arr[i] = arr[i+1];
arr[i+1]=temp;
}
}
return arr;
}
public int[] sort(int[] arr) {
for (int j = 1; j <= arr.length; j++) {
arr = sortARound(arr, arr.length-j);
}
return arr;
}
public static void main(String[] args) {
int[] arr = {7,2,3,9,28,1};
BubbleSortOOP bubbleSort03 = new BubbleSortOOP();
System.out.println(Arrays.toString(arr));
}
}
until์ด๋ผ๋ ๋ณ์๋ฅผ ์ด์ฉํด์ i์์ j๋ก ํํ๋๋ ๋ถ๋ถ์ ํ๋ผ๋ฉํฐ๋ก ์ ๋ ฅ๋ฐ์ ์ ๋ ฅ
๋ฒ๋ธ์ ๋ ฌ ๋๋ฒ์งธ ๋ฐฉ๋ฒ - arr[0]๊ฐ์ ๊ณ ์ ํ์ฌ ๋น๊ต
public class BubbleSortTwo {
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28, 1};
int i = 0;
for (int j = 1; j < arr.length; j++) {
if(arr[i] > arr[j]){ //arr[0] (7)์ด arr[j] (2)๋ณด๋ค ํฐ๊ฐ?
int temp = arr[i]; // arr[0]์ด ํฌ๋ค๋ฉด temp์ arr[0] ๋์
arr[i] = arr[j]; // ๊ธฐ์กด arr[0] (์ฒซ๋ฒ์งธ ์๋ฆฌ.๊ฐ์ฅ์์ ์)์๋ j๊ฐ ๋ค์ด๊ฐ๊ฒ ๋จ
arr[j] = temp; //๋จ์ j ์๋ฆฌ์๋ arr[0] (7)
}
}
System.out.println(Arrays.toString(arr));
}
}
step2
public class BubbleSortTwo {
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28, 1};
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[i] > arr[j]){ //arr[0] (7)์ด arr[j] (2)๋ณด๋ค ํฐ๊ฐ?
int temp = arr[i]; // arr[0]์ด ํฌ๋ค๋ฉด temp์ arr[0] ๋์
arr[i] = arr[j]; // ๊ธฐ์กด arr[0] (์ฒซ๋ฒ์งธ ์๋ฆฌ.๊ฐ์ฅ์์ ์)์๋ j๊ฐ ๋ค์ด๊ฐ๊ฒ ๋จ
arr[j] = temp; //๋จ์ j ์๋ฆฌ์๋ arr[0] (7)
}
}
}System.out.println(Arrays.toString(arr));
}
}
j๊ฐ i+1๋ฒ์งธ๊ฐ ๋์ด i์ arr.length๊ธธ์ด๋งํผ ๋น๊ตํ ์ ์๊ฒ for๋ฌธ์ ๋ฃ์ด์ค๋ค.
๋ฒ๋ธ์ ๋ ฌ ๋๋ฒ์งธ ๋ฐฉ๋ฒ OOP
public class BubbleSortTwoOOP {
public int[] sort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) { //arr[0] (7)์ด arr[j] (2)๋ณด๋ค ํฐ๊ฐ?
int temp = arr[i]; // arr[0]์ด ํฌ๋ค๋ฉด temp์ arr[0] ๋์
arr[i] = arr[j]; // ๊ธฐ์กด arr[0] (์ฒซ๋ฒ์งธ ์๋ฆฌ.๊ฐ์ฅ์์ ์)์๋ j๊ฐ ๋ค์ด๊ฐ๊ฒ ๋จ
arr[j] = temp; //๋จ์ j ์๋ฆฌ์๋ arr[0] (7)
}
}
}
return arr;
}
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28, 1};
BubbleSortTwoOOP bubbleSortTwoOOP = new BubbleSortTwoOOP();
arr = bubbleSortTwoOOP.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
AWS
์ธ์คํด์ค ์์ฑํ๊ธฐ
aws ํํ์ด์ง ์ ์ ํ ๋ก๊ทธ์ธ -> EC2 ์ฆ๊ฒจ์ฐพ๊ธฐ ->
๋๋ผ๋ฅผ ํ๊ตญ - ์์ธ๋ก ๋ณ๊ฒฝ
์ธ์คํด์ค ์์
์ด๋ฆ ์ค์ ๋ฐ OS ์ค์ - ์ฐ๋ถํฌ๋ก ์ค์ ํด์ฃผ์๋ค.
๊ทธ ์ธ ์ค์
- ์ธ์คํด์ค ์ ํ : t3-small
- ํค ํ์ด ์์ฑ : ์ด๋ฆ ์ ๋ ฅ ํ ํคํ์ด์ ํ(RSA), ํค ํ์ผ ํ์(.pem)
- ๋คํธ์ํฌ ์ค์ : ์ธํฐ๋ท์์ HTTPS ํธ๋ํฝ ํ์ฉ , ์ธํฐ๋ท์์ HTTP ํธ๋ํฝ ํ์ฉ, ์์ SSH ํธ๋ํฝ ํ์ฉ
- ๊ณ ๊ธ ์ธ๋ถ ์ ๋ณด : ์คํ ์ธ์คํด์ค ์์ฒญ
์ธ์คํด์ค ์์์ ๋๋ฅด๋ฉด
์ด๋ ๊ฒ ๋ฌ๋ค.
SSH ์ ์ํ๊ธฐ
ํฐ๋ฏธ๋์์
ssh ubuntu@ec2๋๋ฉ์ธ -i <pemkey_name>.pem
+ ec2 ๋๋ฉ์ธ์ ์ ์ฌ์ง์์ ์ฐ์ธก ํ๋จ์ ํผ๋ธ๋ฆญ IPv4 DNS ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๊ธฐ ํ๋ฉด ๋๋ค.
๋๊ฐ์ ๊ฒฝ์ฐ๋ ssh ubuntu@ec2-3-38-147-211.ap-northeast-2.compute.amazonaws.com -i likelion-course5.pem
์ด๋ ๊ฒ ์ ๋ ฅํ๋ค.
ssh ์ ์ํ์ฌ webhook ๋ณด๋ด๊ธฐ
VAR="$1"
curl \
-H "Content-Type: application/json" \
-d "{\"username\": \"Hi\", \"content\": \"$VAR\"}" \
https://discord.com/api/webhooks/1090549186040184913/_nVKm8TfNkMjjZDz2lgNqbVQBmciLcgii6trO7nXIEz7LAtMHVRBXkSVwoSd-nYRGxzU
์ด๊ฑฐ๋ ๊ฐ์ฌ๋๊ป์ ๊ณต์ ํด์ฃผ์ ์ฝ๋์ธ๋ฐ ๋๋ vi webhook.sh ์ ์ ๋ ฅํด ๋ด์ฉ์ ํธ์งํด์ฃผ์๋ค.
VAR="$1"
curl \
-H "Content-Type: application/json" \
-d "{\"username\": \"์ ๋๋ค์ ์\", \"content\": \"$VAR\"}" \
https://discord.com/api/webhooks/1090549186040184913/_nVKm8TfNkMjjZDz2lgNqbVQBmciLcgii6trO7nXIEz7LAtMHVRBXkSVwoSd-nYRGxzU
์ดํ bash webhook.sh "์ฐ๊ณ ์ถ์๋ง"
ํ๋ฉด ๋์ค์ฝ๋์์ webhook์ด ๋ ๋ผ์จ๋ค!!!!!!!
Docker ์ค์น
๋ค์์ Docker ์ค์น์ธ๋ฐ ์ค์นํ๊ธฐ ์ํด์๋ root ๊ถํ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค.
์๋์ ๊ฐ์ด ์คํ
๊ฐ์ฌ๋๊ป์ ๊ณต์ ํด์ฃผ์ ๊ฒฝ๋ก๋ก ํ๋ฒ์ ์ค์นํ ์ ์์๋ค.
git clone https://github.com/Kyeongrok/docker_minikube_kubectl_install; cd docker_minikube_kubectl_install;sh docker_install.sh;
์๋์ค์น ํ๋ ๋ฒ
sudo apt-get update -y
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository --yes \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
Oh My Bash ์ค์น
oh my bash ( mac์ oh my zsh ) ๋ฅผ ์ค์นํ๋ค
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
๋ง์ฐฌ๊ฐ์ง๋ก ์ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅ๋ง ํ๋ฉด ์ค์น ์๋ฃ๋ค.
NginX ์ ๊ทผํ๊ธฐ
์ ๋ช ๋ น์ด๋ค์ ์คํ ํ ๋ค์ ec2-3-36-101-43.ap-northeast-2.compute.amazonaws.com <- ์ฌ๊ธฐ๋ก ๋ค์ด๊ฐ๋ฉด
์์ ๊ฐ์ ํ์ด์ง๊ฐ ๋จ๊ฒ ๋๋ฉด ์ฑ๊ณต์ด๋ค.
์ธ๋ฐ์ด๋ ๊ท์น ํธ์ง
์๋ฒ ์ ์์ด ์๋ ๋ ํฌํธ ๋ฒํธ๋ฅผ ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
๋ณด์ > ๋ณด์๊ทธ๋ฃน
์ฐ์ธก ํ๋จ ์ธ๋ฐ์ด๋ ๊ท์น ํธ์ง
ํฌํธ๋ฒ์ ํน์ ์ ํ ํธ์ง์ ํ๋ฉด ๋๋ค.
'algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
(230517) ์๊ณ ๋ฆฌ์ฆ - Stack(์คํ) / DB (0) | 2023.05.17 |
---|---|
(230516) ์๊ณ ๋ฆฌ์ฆ - ์ฝ์ ์ ๋ ฌ / AWS & Docker - container ํธ์ง, glances, (0) | 2023.05.16 |
(230510)์๊ณ ๋ฆฌ์ฆ-๋ค์ด์๋ชฌ๋๋ง๋ค๊ธฐ / JAVA - ์ธํฐํ์ด์ค, ์ถ์ํด๋์ค (0) | 2023.05.11 |
(230509) ๋ณ์ฐ๊ธฐ ์๊ณ ๋ฆฌ์ฆ (0) | 2023.05.10 |
(230508)๋ณ์ฐ๊ธฐ ์๊ณ ๋ฆฌ์ฆ, ๋ฉ์๋ (0) | 2023.05.09 |