Logseq/pages/👩🏻‍💻코딩 팁 코드 모음_이전.md
2025-07-12 22:29:57 +09:00

249 lines
7.2 KiB
Markdown

deck:: Logseq/coding tip
- ## **파이썬, 자바스크립트 반복문 순회 및 객체/딕셔너리 순회**
- ### **► 일반적인 반복가능 객체를 활용한 반복문 순회(기본 순회)**
- **● pythron**
id:: 684e9cfd-e828-43ac-9f6c-76492bdcf94a
- ```python
arr = [1,2,3,4,5]
for i in arr :
print(i)
# 출력
# 1 2 3 4 5
```
- **● javascript**
id:: 684e9d25-ddf8-4f7c-b781-21bb247497f8
- ```javascript
const arr = [1,2,3,4,5];
for(let i of arr) {
console.log(i);
}
// 출력
// 1 2 3 4 5
```
-
- ### **► 자바스크립트의 객체(Object) 는 파이썬의 딕셔너리(Dictionary)**
- **키(key)와 값(value)을 가지는 데이터의 집합(각각의 언어에서 서로 동일하다고 생각해도 무방함)**
- **◎ 선언 및 접근방법**
- **● pythron**
id:: 684e9fb3-3cf0-4fa0-8539-e53bfe7fbcc1
- ```python
# 빈데이터 초기화 방법
dic = {} # dict()
# 직접 선언 방법
dic = {
"name": "Yechan",
"age" : 30
}
# 출력
print(dic["name"])
print(dic["age"])
# Yechan
# 30
```
- **● javascript**
id:: 684ea0a5-0720-4a7b-a3b0-6fd81541ec05
- ```javascript
// 빈데이터 초기화 방법
let obj = {};
// 직접 선언 방법
let obj = {
"name": "Yechan",
"age" : 30
};
// 출력
console.log(obj.name);
console.log(obj["age"]);
// Yechan
// 30
// 두 방법 모두 사용 가능
```
- **◎ 키 및 값 순회(반복문 사용, 순서는 보장되지 않음)**
- **● pythron**
id:: c506e90a-c84b-4498-ba5f-5028f5a874f6
- ```python
dic = {
"name": "Yechan",
"age" : 30
}
# key 순회
for key in dic :
print(dic[key])
# Yechan
# 30
# key, value 순회
for key, value in dic.items() :
print(key, value)
# name Yechan
# age 30
```
- **● javascript**
id:: f380d0d7-7826-4714-bb8c-c78cc601ca50
- ```javascript
let obj = {
"name": "Yechan",
"age" : 30
};
// key 순회
for(let key in obj){
console.log(obj[key]);
}
// Yechan
// 30
// key, value 순회
for [key, value] of Object.entries(obj) {
console.log(key, value);
}
// name Yechan
// age 30
for key of Object.keys(obj) {
console.log(key, obj[key]);
}
// name Yechan
// age 30
```
-
- ### **► 파이썬에서 반복가능한 데이터셋의 값과 인덱스를 불러와서 순회하기**
- **enumerate()**
id:: 6857c511-ce76-4075-ba45-a38956deb7df
- 반복가능한 데이터셋의 값과 인덱스를 튜플형태로 반환하는 함수
id:: 6857c541-93f0-441f-8ff1-ca3cf8a3b186
- ```python
arr = ["apple", "banana", "cat"]
for i in enumerate(arr) :
print(i)
# 출력
# (0, apple)
# (1, banana)
# (2, cat)
```
- 반복문에서 인덱스와 값을 동시에 순회할 수 있음.
id:: 6857c6b6-3201-47a1-a090-c0ebe75d5e4c
- ```python
arr = ["apple", "banana", "cat"]
for index, value in enumerate(arr) :
print(index, value)
# 출력
# 0 apple
# 1 banana
# 2 cat
```
- 시작 인덱스를 바꿀 수도 있음.
id:: 6857c623-b8e4-4325-a8c2-27a9446118bd
- ```python
arr = ["apple", "banana", "cat"]
for index, value in enumerate(arr, start=1) :
print(index, value)
# 출력
# 1 apple
# 2 banana
# 3 cat
```
-
-
- ## **C언어 변수 타입별 메모리 할당크기 정리**
- ### **빈칸 채워보기**
id:: 684ea7e1-e59d-47a5-971f-2114a17fdda7
- ![image.png](../assets/image_1749986661502_0.png)
id:: 684eae27-cd8a-4043-b999-d51b71757544
- ![image.png](../assets/image_1749986614051_0.png)
id:: 684ea656-cac9-45ba-8dc4-5ade273c8777
-
- ## **비트연산 정리**
- ### **XOR(배타적 논리합)**
- 기호 : ^
id:: 684eaf61-54bb-4f69-af87-f75f280bd119
- 연산값 : (0,0)->0, (0,1)->1, (1,0)->1, (1,1)->0 [같으면 0, 다르면 1]
id:: 684eafb2-7091-4d69-8c3f-0540d687b782
- 핵심성질
id:: 684eaff6-5a2b-4cdd-ba5d-cba163b087fa
- 같은 값끼리 XOR하면 0이 된다: `a ^ a = 0`
- 0과 XOR하면 자기 자신이 된다: `a ^ 0 = a`
- 교환법칙, 결합법칙이 성립한다: `a ^ b = b ^ a`, `(a ^ b) ^ c = a ^ (b ^ c)`
- 활용
id:: 684eb038-f987-419b-b531-2b7a868c0842
- 중복되는 여러 수들 중에 단 하나 다른 수를 찾는 방법으로 활용
id:: 684eb045-4df8-4943-bdfb-65f983f2704e
- 모든 수를 하나하나 xor하면 결국 최종적으로 나오는 결과는 다른 하나가 나옴.
- ```C
int arr[] = {1, 2, 3, 2, 1};
int res = 0;
for(int i=0; i<5; i++) res ^= arr[i];
// res == 3 (짝이 없는 값)
```
- 중복되는 수가 홀수개로 짝지어져 있으면 사용할 수 없음
- 단 단 하나의 수를 제외한 모든 수가 같은 숫자라면 사용 가능
- 임시변수 없이 두 변수의 값을 swap
id:: 684eb1a1-f13d-45c3-b03b-da9372da5e7c
- XOR 연산의 성질을 잘 응용하면 아래의 코드처럼 두 변수를 교환할 수 있음.
- ```C
int a = 3;
int b = 5;
a = a ^ b;
b = a ^ b;
a = a ^ b;
// 이제 a=5, b=3 (값이 서로 바뀜)
```
-
- ## **자바스크립트 특징관련 내용**
- **화살표 함수**
- 정의
id:: 685d3bc9-b9df-4cc9-be77-d6f26ee73924
- 함수를 funcion으로 따로 선언해서 사용하는 것이 아닌 한줄, 혹은 여러줄로 간결하게 표현하는 표현식의 한 형태.
- ```javascript
// 기존 함수 선언 방식
function sum(a, b) {
return a+b;
}
// 화살표 함수
const sum = (a,b) => a+b;
```
- 사용방법
id:: 685d3bec-8254-43a8-9d7a-fada78a05b6a
- 변수타입 및 함수명을 쓰고 그 뒤에 =을 붙인 뒤 변수들을 괄호로 지정한 뒤 => 기호로 연결.
- 이 후 화살표 뒤에 함수를 적으면 됨.
- 이 뒤의 함수가 한줄이면 return을 쓰지 않아도 알아서 반환함.
- 여러줄 일 경우에는 중괄호를 쓰고, 이때는 꼭 return을 써줘야 함.
- ```javascript
// 한 줄, 암시적 반환
const sum = (a, b) => a + b;
// 여러 줄, 명시적 반환 필요
const multiply = (a, b) => {
const result = a * b;
return result;
};
```
- 예시코드
- 한 줄로 표현, 입력값의 2배를 반환하는 함수 선언
id:: 685d3c87-2b8e-410e-87f6-9166619ab636
- ```javascript
const double = x => x*2;
console.log(double(10)); // 20
```
- 여러줄 표현, 두 수를 입력받아서 그 두 수를 곱한 값을 반환하는 함수 선
id:: 685d3cd9-6924-4800-a57d-61f5d37193db
- ```javascript
const multiply = (a,b) => {
const result = a*b;
return result;
};
console.log(multiply(10,5)); // 50
```