[코테] 프로그래머스 - 문법 정리

김재연·2023년 7월 4일
0
post-thumbnail

1. 연산자

  • 산술연산
>>> 1 + 2 # 더하기
3
>>> 2 - 1 # 빼기
1
>>> 2 * 2 # 곱하기
4
>>> 4 / 2 # 나누기
2.0
>>> 4 // 2 # 몫
2
>>> 4 % 2 # 나머지
0
>>> 2 ** 3 # 거듭제곱
8
  • 제곱수 판별하기
    : 제곱수의 약수는 홀수개이다.
>>> if int(i**0.5) == i**0.5
  • 비트연산 (2진수 연산 기준)
    : 10진수끼리 비트연산할 시 2진수로 변환해서 계산
    : 논리연산은 and, or, not
>>> bin(0b1010 & 0b1110) # 비트 AND
'0b1010'
>>> bin(0b1010 | 0b1110) # 비트 OR
'0b1110'
>>> bin(0b1010 ^ 0b1110) # 비트 XOR
'0b100'
>>> bin(0b1010 << 2) # 왼쪽 shift
'0b101000'
>>> bin(0b1010 >> 2) # 오른쪽 shift
'0b10'

2. 기본내장함수

>>> sum([1,2,3,4,5])
15
  • 길이
>>> len([1,2,3,4,5])
5
  • 절대값
>>> abs(-2)
2
  • 반올림
>>> round(2.746920, 2)
2.75
  • 최대값, 최소값
>>> max([1,2,3,4,5])
5
>>> min([1,2,3,4,5])
1
  • 몫과 나머지
>>> divmod(20, 3)
(6, 2)
  • 평균
>>> my_list = [1,2,3,4,5]
>>> sum(my_list) / len(my_list)
3.0

3. 자료형 변환

  • 10진수 정수형으로 바꾸기
>>> int("123") # int("123", 10)와 동일
123
>>> int("101010", 2) # 2진수 "101010"을 10진수 42로
42
>>> int("121212", 3) # 3진수 "121212"를 10진수 455로
455
  • 문자형으로 바꾸기
>>> str(123)
'123'
  • 아스키코드 변환
    : Z->A, z->a의 경우에는 각각 65, 97로 나눈 나머지값 사용하면 됨
>>> chr(97) # 숫자 -> 알파벳
'a'
>>> chr(65)
'A'
>>> ord('a') # 알파벳 -> 숫자
97
>>> ord('A')
65
  • 2진수 문자열로 변환
>>> bin(42)
'0b101010'

4. math 모듈

  • 팩토리얼
>>> from math import factorial
>>> factorial(5)
120
  • 제곱근
    : n**0.5으로도 구할 수 있다.
>>> from math import sqrt
>>> sqrt(5)
2.23606797749979
>>> sqrt(100)
10.0
  • 최대공약수
>>> from math import gcd
>>> gcd(24, 36)
12
  • 최소공배수
    : lcm()은 파이썬 3.9부터 있어서 코테에서 사용하지 못할 수도 있다.
    : a와 b의 최소공배수 = a * b // 최대공약수
>>> from math import lcm
>>> lcm(24, 36)
72
  • 올림
>>> from math import ceil
>>> ceil(1.2)
2
>>> ceil(1.9)
2
  • 내림
>>> from math import floor
>>> floor(1.2)
1
>>> floor(1.9)
1

5. itertools 모듈

  • 순열
    : nPr, n개 중 r개를 골라 순서를 고려해 나열한 경우의 수
>>> from itertools import permutations
>>> [p for p in permutations(['A', 'B', 'C'], 2)]
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
  • 조합
    : nCr, 서로 다른 n개 중 r개를 고르는 경우의 수
>>> from itertools import combinations
>>> [c for c in combinations(['A', 'B', 'C'], 2)]
[('A', 'B'), ('A', 'C'), ('B', 'C')]

6. collections 모듈

: 파이썬의 자료형(list, tuple, dict)들에게 확장된 기능을 주기 위해 제작된 파이썬의 내장 모듈

  • 카운터 (값의 개수 세기)
>>> from collections import Counter

>>> Counter(["hi", "hey", "hi", "hi", "hello", "hey"])
Counter({'hi': 3, 'hey': 2, 'hello': 1})

>>> Counter("hello world")
Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})

>>> Counter('hello world').most_common(3)
[('l', 3), ('o', 2), ('h', 1)] # 가장 많이 쓰이는 k개

>>> Counter(["A", "A", "B"]) + Counter(["A", "B", "B"])
Counter({'A': 3, 'B': 3}) # 산술연산 가능

7. 기타 함수

  • lambda
    : 익명함수
# lambda 매개변수: 표현식
lambda x: "A등급" if x >= 80 else "B등급"
  • map
    : 리스트/튜플의 요소를 하나씩 돌아가며 함수를 통해 바꿈
    : 반환값이 map 객체이기 때문에 list()로 바꿔서 사용
>>> list(map((lambda x: x + 2), [1, 2, 3, 4, 5]))
[3, 4, 5, 6, 7]
  • 변수를 포함한 문자열 포맷
>>> a = "world"
>>> print(f"Hello, {a}!")
Hello, world!
  • 출력할때 줄바꿈 문자 없애기
print("Hello World!", end='')
  • for ~ else 구문
    for문이 중간에 break 등으로 끊기지 않고 끝까지 수행 되었을 때 else에 담긴 코드가 실행된다.

8. 정규식

  • 연속된 숫자 찾기
>>> import re
>>> re.findall(r'\d+', "A12BC3D456")
['12', '3', '456']

9. 전역변수

함수 밖에서 선언한 변수는 기본적으로 전역변수다.
함수 안에서 선언한 변수는 지역변수다.
함수 안에서 전역변수를 사용하려면 변수 사용 이전에 global 키워드를 붙여서 선언부터 한다.

  • 함수 밖에서 전역변수 x를 선언했지만, 함수 안에서 global x을 쓰지 않으면 그냥 똑같은 이름의 지역변수 x를 사용하게 됨
x = 10          # 전역 변수
def foo():
    x = 20      # x는 foo의 지역 변수
    print(x)    # foo의 지역 변수 출력
 
foo()
print(x)        # 전역 변수 출력
20
10
  • 함수 밖에서 전역변수 x를 선언하고, 함수 안에서 global x를 통해 전역변수 x를 사용할 것이라고 설정
x = 10          # 전역 변수
def foo():
    global x    # 전역 변수 x를 사용하겠다고 설정
    x = 20      # x는 전역 변수
    print(x)    # 전역 변수 출력
 
foo()
print(x)        # 전역 변수 출력
20
20
  • 함수 안에서 아예 전역변수 x를 선언
# 전역 변수 x가 없는 상태
def foo():
    global x    # x를 전역 변수로 만듦
    x = 20      # x는 전역 변수
    print(x)    # 전역 변수 출력
 
foo()
print(x)        # 전역 변수 출력
20
20
  • 함수가 2개이고 전역변수 x 하나를 같이 쓸 때 (like 프로그래머스)
# 전역 변수 x가 없는 상태
def foo():
    global x # x는 전역 변수
    x = 20
    print(x)

def solution():
    global x # x는 전역 변수
    x = 10
    print(x)
    foo()
    print(x)

solution()
10
20
20
profile
일기장같은 공부기록📝

0개의 댓글