2025-07-03 20:36:44 +09:00

6.9 KiB

deck:: Logseq/coding tip

  • 각 언어별 2차원 배열(n*m) 생성

    • Javascript
      • id:: 684578c3-84af-4595-af7a-dc46f58bd99b
        1. 한줄로 선언하기(2가지 방법) #card
        • const arr = Array.from({ length: n }, () => new Array(m).fill(0));
          
          const arr = new Array(n).fill().map(() => new Array(m).fill(0));
          
      • id:: 68457909-49bf-4cab-b5fc-c61081c0aa0c 2. 반복문으로 중첩해서 생성하기 #card
        • let arr = [];
          for (let i = 0; i < n; i++) {
            arr[i] = [];
            for (let j = 0; j < m; j++) {
              arr[i][j] = 0;
            }
          }
          
      • id:: 684577c9-7ecc-4ac9-a959-40f1d7593b1b 3. 값이 정해져있는 경우 #card
        • const arr = [
            [1, 2, 3],
            [4, 5, 6],
            [7, 8, 9]
          ];
          
    • python
      • id:: 82ac6ae7-4155-407c-ac0a-78f00ed46c6a
        1. 한줄로 선언하기 #card
        • arr = [[0]*m for _ in range(n)]
          
  • 진수변환 알고리즘

    • B진수 숫자 N을 10진수로 바꾸는 법(누적곱 방식) #card id:: 68458948-9821-42c7-bb19-85d7c7ad4b8d
      • N의 왼쪽부터 한 자리씩 누적해서 곱하고 더하는 방식
      • 알고리즘
        • 최종결과 res를 0으로 초기화
        • 반복문을 통해 N의 왼쪽숫자부터 하나씩 순회함.
        • 순회하면서 읽은 값을 10진수로 바꾸고(A=10, B=11...) 그 값은 val에 저장.
        • res = res*B + val
        • 반복문을 모두 돌고 나면 최종적으로 res에 변환값이 들어가있음.
    • 10진수 숫자 N을 B진수로 바꾸는 법(나머지 계산법) #card id:: 68458b0d-5584-48bf-8bb4-aad6449b0193
      • N을 B로 계속 나누면서 그때마다 나머지값을 통해 변환하는 방식
      • 알고리즘
        • 최종 결과 문자열 res를 선언.
        • N이 0이 될 때까지 반복문을 순회함.
        • val에 N을 B로 나눈 나머지 값을 저장.
        • val값을 진법에 맞게 변환해서 res에 넣음.(앞에서 부터 넣는다)
        • N을 B로 나눈 몫으로 N을 재선언(N=N//B)
        • 위의 과정을 반복한 뒤 반복문을 빠져나오면 res에는 최종 변환결과가 역순으로 들어가있음.
  • 소수점 올림 연산

    • ceil함수를 사용하지 않는 방법 #card id:: 68494b21-76da-4013-a61a-8c8cd812e253
      • ceil(x/y) = (x+y-1)//y
        
  • 파이썬, 자바스크립트 반복문 순회 및 객체/딕셔너리 순회

    • ► 일반적인 반복가능 객체를 활용한 반복문 순회(기본 순회)

      • ● pythron #card id:: 684e9cfd-e828-43ac-9f6c-76492bdcf94a
        • arr = [1,2,3,4,5]
          
          for i in arr :
          	print(i)
          
          # 출력
          # 1 2 3 4 5
          
      • ● javascript #card id:: 684e9d25-ddf8-4f7c-b781-21bb247497f8
        • 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 #card id:: 684e9fb3-3cf0-4fa0-8539-e53bfe7fbcc1
          • # 빈데이터 초기화 방법
            dic = {} # dict()
            
            # 직접 선언 방법
            dic = {
            "name":  "Yechan",
            "age" : 30
            }
            
            # 출력
            print(dic["name"])
            print(dic["age"])
            # Yechan
            # 30
            
        • ● javascript #card id:: 684ea0a5-0720-4a7b-a3b0-6fd81541ec05
          • // 빈데이터 초기화 방법
            let obj = {};
            
            // 직접 선언 방법
            let obj = {
            "name":  "Yechan",
            "age" : 30
            };
            
            // 출력
            console.log(obj.name);
            console.log(obj["age"]);
            // Yechan
            // 30
            // 두 방법 모두 사용 가능
            
      • ◎ 키 및 값 순회(반복문 사용, 순서는 보장되지 않음)
        • ● pythron #card id:: c506e90a-c84b-4498-ba5f-5028f5a874f6
          • 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 #card id:: f380d0d7-7826-4714-bb8c-c78cc601ca50
          • 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
            
  • C언어 변수 타입별 메모리 할당크기 정리

    • 빈칸 채워보기

      id:: 684ea7e1-e59d-47a5-971f-2114a17fdda7
      • image.png #card id:: 684eae27-cd8a-4043-b999-d51b71757544
        • image.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
      • 핵심성질 #card 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)
      • 활용 #card #depth-1 id:: 684eb038-f987-419b-b531-2b7a868c0842
        • 중복되는 여러 수들 중에 단 하나 다른 수를 찾는 방법으로 활용 #card id:: 684eb045-4df8-4943-bdfb-65f983f2704e
          • 모든 수를 하나하나 xor하면 결국 최종적으로 나오는 결과는 다른 하나가 나옴.
          • int arr[] = {1, 2, 3, 2, 1};
            int res = 0;
            for(int i=0; i<5; i++) res ^= arr[i];
            // res == 3 (짝이 없는 값)
            
          • 중복되는 수가 홀수개로 짝지어져 있으면 사용할 수 없음
            • 단 단 하나의 수를 제외한 모든 수가 같은 숫자라면 사용 가능
        • 임시변수 없이 두 변수의 값을 swap #card id:: 684eb1a1-f13d-45c3-b03b-da9372da5e7c
          • XOR 연산의 교환법칙을 잘 응용하면 아래의 코드처럼 두 변수를 교환할 수 있음.
          • int a = 3;
            int b = 5;
            
            a = a ^ b;
            b = a ^ b;
            a = a ^ b;
            // 이제 a=5, b=3 (값이 서로 바뀜)