C언어


1. sizeof()

  • 자료형의 byte 크기를 나타냄
#include <stdio.h>

int main()
{
    int num1 = 0;
    int size;

    size = sizeof num1;    // 변수 num1의 자료형 크기를 구함

    printf("num1의 크기: %d\n", size);

    return 0;
}

// 출력
// num1의 크기: 4

2. switch case 문

#define _CRT_SECURE_NO_WARNINGS    // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>

int main()
{
    int num1;

    scanf("%d", &num1);    // 값을 입력받음

    // switch의 case에서 break 삭제
    switch (num1)
    {
    case 1:    // 1일 때는 아래 case 2, default가 모두 실행됨
        printf("1입니다.\n");
    case 2:    // 2일 때는 아래 default까지 실행됨
        printf("2입니다.\n");
    default:
        printf("default\n");
    }

    return 0;
}
  • switch 문의 case에 break가 없다면, 밑의 case문들과 deafult까지 출력하게 된다. (fall through)

isdigit()

숫자인지 아닌지 판단하는 함수

#include <stdio.h>
#include <ctype.h>
 
int main()
{
    char arr[13] = "ABCDEF123456";
    printf("arr : %s \n\n", arr);
 
    for (int i = 0; i < 12; i++)
    {
        printf("arr[%d] = %c    isdigit: %d \n",i,arr[i], isdigit(arr[i]));
    }
    return 0;
}

포인터

Java


1. extends -> 상속

ex)

class SuperObject {
    public void paint(){
        draw();
    }
 
    public void draw(){
        draw();
        System.out.println("Super Object");
    }
}
 
 
class SubObject extends SuperObject {
    public void paint(){
        super.draw();
    }
 
    public void draw(){
        System.out.println("Sub Object");
    }
}
 
 
public class Test{
    public static void main(String[] args){
        SuperObject a = new SubObject();
        a.paint();
    } 
}

클래스 SubObject를 정의하고 부모 클래스로 SuperObject를 지정하면 SuperObject에 속한 변수와 메서드를 상속받습니다.

자식 클래스 생성자로 인스턴스를 생성할 때 자료형을 부모 클래스로 지정하면 생성된 인스턴스는 부모 클래스로 묵시적 클래스 형 변환이 됩니다. 부모와 자식 클래스간 같은 메서드가 존재하면 호출되는 메서드는 생성된 인스턴스에 따라 결정됩니다.

a.paint()는 클래스 형 변환을 수행하였고 print()메서드가 자식 클래스에서 재정의를 통해 오버라이딩 된 메서드이므로 자식 클래스의 paint 메서드가 수행됩니다.

부모 클래스를 호출하는 super를 사용했으므로 부모 클래스의 draw() 메서드를 수행합니다.

부모 클래스 draw()에서 처음에 클래스 형 변환을 수행하였고 draw()메서드가 자식 클래스에서 재정의를 통해 오버라이딩 된 메서드이므로 자식 클래스의 draw()메서드를 수행합니다.

자식 메서드 draw를 수행하면서 'Sub Object가 수행되고' 다시 부모 draw()로 돌아가 나머지 'Super Object'를 수행합니다.


  • 부모클래스 변수명 = New 자식생성자
    • SuperObject a = new SubObject();
    • 부모 클래스 객체 생성. but, 자식객체의 생성자 사용
      • 부모 클래스와 자식 클래스에 동일한 속성이나 메소드가 있다면, 자식 클래스로 재정의

2. == 와 .equals()

  • == 은 객체의 참조(주소)를 비교한다.
  • .equals()는 말그대로 해당 참조에 있는 데이터를 비교함

public class Main {
    public static void main(String[] args) {
        String str1 = "Programming";
        String str2 = "Programming";
        String str3 = new String("Programming");

        System.out.println(str1 == str2);      // ①
        System.out.println(str1 == str3);      // ②
        System.out.println(str1.equals(str3)); // ③
        System.out.print(str2.equals(str3));   // ④
    }
}

//결과
true
false
true
true

1️⃣ String str1 = "Programming";

문자열 리터럴 "Programming"을 String Constant Pool(문자열 상수 풀)에 저장.
str1이 "Programming"을 가리킴.

2️⃣ String str2 = "Programming";

동일한 문자열 "Programming"이 이미 String Pool에 존재.
str2는 str1과 동일한 "Programming"을 참조.

3️⃣ String str3 = new String("Programming");

new String("Programming")은 Heap 영역에 새로운 문자열 객체를 생성.
str3은 String Pool의 "Programming"을 참조하지 않고, 새로 생성된 객체를 참조

해설
따라서 str1, str2는 동일한 Programming을 참조 하지만, 생성자를 통한 str3은 힙영역에 저장되기 때문에 str1, str2와 다른 주소를 갖고 있다.

Python


리스트와 세트

리스트 생성 방법

a = ['a', 'b', 'c']

세트 생성 방법

a = {'a', 'b', 'c'}

리스트

  • 순서가 있음
  • 중복된 데이터가 있을 수 있음
  • 여러 자료형을 저장할 수 있음
    ex) a = [3, 1.234, 'ABC']
  • 선언 시, 크기를 적지 않아도 됨

세트

  • 순서가 정해져있지 않음
  • 중복된 데이터는 저장되지 않음

리스트 관련 주요 메서드

  • apppend(값)
    • 리스트에 값을 추가한다.

Ex)

[1, 2, 3].append(4) -> [1, 2, 3, 4]
  • pop(위치)
    • 리스트의 '위치'에 있는 값을 출력하고 해당 요소를 삭제한다.

ex)

[10, 11, 12].pop(1) -> 11 출력 -> [10, 12]
  • index(값)
    • 리스트에서 '값'이 저장된 요소의 위치를 반환한다.

ex)

[10, 11, 12].index(2) -> 2
  • count(값)
    • 리스트에서 '값'이 저장되어 있는 요소들의 개수를 반환한다.

ex)

[1, 0, 1, 1, 0].count(1) -> 3
  • extend(리스트)
    • 리스트의 끝에 새로운 리스트를 추가하여 확장한다.

ex)

['a', 'b'].extend(['c', 'd']) -> ['a', 'b', 'c', 'd']
  • reverse()
    • 리스트의 순서를 역순으로 뒤집는다.

ex)

[10, 11, 12].reverse() -> [12, 11, 10]
  • sort()
    • 리스트를 정렬하며, 기본값은 오름차순이다.

ex)

[2, 1, 3].sort() -> [1, 2, 3] 
[2, 1, 3].sort(reverse = True) -> [3, 2, 1]
  • copy()
    • 리스트를 복사한다.

ex)

a = [1,2,3]
b = a.copy()

세트 관련 주요 메서드

  • pop()
    • 세트의 값을 출력하고 요소를 삭제한다.

ex)

{10, 11, 12}.pop() -> 10 출력 -> {11, 12}
  • add(값)
    • 세트에 값을 추가한다.

ex)

{10, 11, 12}.add(13) -> {10, 11, 12, 13}
  • update(세트)
    • 세트에 새로운 '세트'를 추가하여 확장한다.

ex)

{'a', 'b', 'c'}.update({'c', 'd'}) -> {'a', 'b', 'c', 'd'}
  • remove(값)
    • 세트에서 '값'을 찾아 해당 요소를 삭제한다.

ex)

{10, 11, 12}.remove(11) -> {10, 12}

튜플

튜플 생성 방법

tuple1 = (1, 'b', 'c')
tuple2 = tuple(['a', 'b']) 

튜플

  • 순서가 있음
  • 중복된 데이터가 있을 수 있음
  • 여러 자료형을 저장할 수 있음
  • 리스트와는 다르게 수정 및 삭제 불가능
  • 값이 한개만 들어갈 경우 값을 넣고 콤마(,)를 넣어줘야 함.

ex)

tuple = (1,)

Range

  • Range는 연속된 숫자를 생성하는 것으로, 리스트나 반복문에서 많이 사용된다.

<형식>

range(최종값)

  • 0에서 최종값 - 1까지 연속된 숫자를 생성한다.

range(초기값, 최종값)

  • 초기값에서 최종값 - 1까지 연속된 숫자를 생성한다.

range(초기값, 최종값, 증가값)

  • 초기값에서 최종값 - 1까지 증가값만큼 증가하면서 숫자를 생성한다.
  • 증가값이 음수인 경우 초기값에서 최종값 + 1까지 증가값 만큼 감소하면서 숫자를 생성한다.

Slice

  • Slice는 문자열이나 리스트와 같은 순차형 객체에서 일부를 잘라 반환하는 기능이다.

객체명[초기위치:최종위치]

  • 초기위치에서 최종위치 - 1까지의 요소들을 가져온다.

객체명[초기위치:최종위치:증가값]

  • 초기위치에서 최종위치 - 1까지 증가값 만큼 증가하면서 해당 위치의 요소들을 가져온다.
  • 증가값이 음수인 경우 초기위치에서 최종위치 + 1까지 증가값만큼 감소하면서 해당 위치의 요소들을 가져온다.

객체명[:] 또는 객체명[::]

  • 객체의 모든 요소를 반환한다.

객체명[초기위치:]

  • 객체의 초기위치에서 마지막 위치까지의 요소들을 반환한다.

객체명[:최종위치]

  • 객체의 0번째 위치에서 최종위치 - 1까지의 요소들을 반환한다.

객체명[::증가값]

  • 객체의 0번째 위치에서 마지막 위치까지 증가값만큼 증가하면서 해당 위치의 요소들을 반환한다.

대문자 변환(upper, capitalize..)

  • upper() : 모든알파벳을 대문자로 변환
  • capitalize() : 맨 첫글자만 대문자로 변환
  • title() : 알파벳 외의 문자(숫자, 특수기호, 띄어쓰기 등)로 나누어져 있는 영단어들의 첫 글자를 모두 대문자로
A='abcd'
print(A.upper()) #ABCD
print(A.capitalize()) #Abcd
print(A.title()) #Abcd

B='a2b3c4'
print(B.upper()) #A2B3C4
print(B.capitalize()) #A2b3c4
print(B.title()) #A2B3C4

C="abc-def efg"
print(C.upper()) #ABC-DEF EFG
print(C.capitalize()) #Abc-def efg
print(C.title()) #Abc-Def Efg

find()

  • string.find(찾을 문자)
str = "findletter"
print(str.find("d"))
#
#결과
3 
  • string.find(찾을 문자, 시작 Index)
  • string.find(찾을 문자, 시작 Index, 끝 Index)

find 함수 첫번째 인자- 찾을 문자열 혹은 찾을 문자

find 함수 두번째 인자 (생략가능)- 문자를 찾을때 어디서 부터 찾을지 시작 index. 생략시 0

find 함수 세번째인자 (생략가능)- 문자를 찾을때 어디 까지 찾을지 끝 index, 생략시 문자열 맨 마지막 index

만약 찾는 단어가 없다면 -1 출력

str = "findletter"
print(str.find("s"))
#
#결과
-1

중복된 단어가 있다면 가장 첫번째 인덱스를 출력

str = "findletter"
print(str.find("t"))
#
#결과
6 # 7 인덱스에도 t가 있으나 6만 확인 가능

in

  • 문자열 내에 찾고자 하는 문자열이 있는지 여부를 boolean값으로 반환
str = "findletter"
print("d" in str)
print("s" in str)
#
#결과
True
False

아스키코드

'A' = 65
'a' = 97

알아두기 혹시 모르니

profile
개발자가 되는 그날까지

0개의 댓글