이것이 코딩테스트다 (1)

On a regular basis·2021년 8월 23일
0

이코테

목록 보기
1/2
post-thumbnail

🙂 자료형 🙂

  • 모든 프로그래밍은 결국 데이터를 다루는 행위
  • 파이썬 자료형: 🍟 정수형, 실수형, 복소수형, 문자열, 리스트, 튜플, 사전 등 🍟
  • 파이썬의 자료형은 필수적으로 알아두어야!

🌺 정수형 (정수를 다루는 자료형)
양의 정수, 음의 정수, 0

양의 정수

a = 1000
print(a)

음의 정수

a = -7
print(a)

0

a = 0
print(a)

🌺 실수형 (소수점 아래의 데이터를 포함하는 수 자료형)

  • 파이썬에서는 변수에 소수점을 붙인 수를 대입하면 실수형 변수로 처리
  • 소수부가 0이거나 정수부가 0인 소수는 0을 생략하고 작성 가능

양의 실수

a = 157.93
print(a)

음의 실수

a = -1937.2
print(a)

  • e나 E를 이용해 지수표현 방식을 이용 가능
  • e나 E 다음에 오는 수는 10의 지수부를 의미
    ex.1e9 -> 10의 9제곱(1,000,000,000)

752.5

a = 75.25e1
print(a)

3.954

a = 3954e-3
print(a)

  • 개발과정에서 실수 값을 제대로 비교하지 못해서 원하는 결과를 얻지 못할 수 있음.

  • 이런 경우에는 round() 함수를 이용.
    ex. 123.456 을 소수 셋째 자리에서 반올림 -> round(123.456, 2)라고 작성
    결과는 123.46

  • 요렇게 round를 써주면 됨!

  • 수 자료형에 대해 사칙연산과 나머지 연산자가 많이 사용됨.
    단, 나누기 연산자(/)를 주의해서 사용해야.
    -> 파이썬에서 나누기 연산자(/)는 나눠진 결과를 실수형으로 반환.
    ex. 2.33333333333 (몇 쩜 몇)

  • 다양한 로직을 설계할 때 나머지 연산자(%)를 이용해야 할 때가 많음
    ex. a가 홀수인지 체크해야 하는 경우 ( a % 2 != 0 )

  • 파이썬에서는 몫을 얻기 위해 몫 연산자(//)를 사용

  • 이외에도 거듭 제곱 연산자(**)를 비롯해 다양한 연산자들이 존재)

🙂 자료형 🙂

🐼 리스트 자료형: 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형
리스트 대신 배열 혹은 테이블이라고 부르기도 함!

🌺 리스트 초기화?

  • 대괄호([])안에 원소를 넣어 초기화, 혹은 쉼표(,)로 원소를 구분

  • 비어있는 리스트를 선언하고자 할 때는 list() 혹은 간단히 []를 이용 가능

  • 리스트의 원소에 접근할 때는 인덱스(Index) 값을 괄호에 넣음

  • 인덱스는 0부터 시작!

  • 인덱스 값을 입력, 리스트의 특정한 원소에 접근하는 것을 인덱싱!
    (인덱스 값은 양의 정수/음의 정수 모두 사용 가능)
    -> 음의 정수를 넣으면 원소를 거꾸로 탐색하게 됨.

  • 리스트에서 연속적인 위치를 갖는 원소들을 가져와야 할 때는 슬라이싱을 이용!

  • 끝 인덱스는 실제 인덱스보다 1을 더 크게 설정함

🌺 리스트 컴프리헨션

  • 리스트를 초기화하는 방법 (간결하게 작성!)
  • 대괄호 안에 조건문과 반복문을 적용해 리스트를 초기화 가능
a = [i for i in range(10)]
print(a)

1) array = [i for i in range(20) if i % 2 ==1]
print(array)

2) array   = []
for i in range(20):
	if i % 2 == 1:
    	array.append[i]
print(array)

🌺 언더바는 언제 사용?

  • 반복을 수행하되 반복을 위한 변수를 무시하고자 할 떄 언더바(_)를 자주 사용.
1) summary = 0
for i in range(1, 10):
	summary += i
print(summary)

2) for _ in range(5):
	print("Hello World")
-> 이렇게 단순반복일 때는 언더바(_)를 사용!

🌺 리스트 관련 가장 많이 나오는 함수()
append()
sort() -> 기본 정렬 기능으로 오름차순으로 정렬
sort(reverse=True) -> 내림차순
reverse()
insert() -> 삽입할 위치 인덱스, 삽입할 값!
count()
remove() -> 특정한 값을 갖는 원소를 제거할 때, 오직 하나만 제거 !

  • remove_set? (여러개 삭제할 때!)
a = [1,2,3,4,5,5]
remove_set = {3,5}
result = [i for i in a if i not in remove_set]
print(result)

🐼 문자열 자료형 : 문자열 변수를 초기화할 때는 큰따옴표(")나 작은 따옴표(')를 이용
문자열 안에 큰따옴표나 작은따옴표가 포함되어야 하는 경우가 있음!
백슬래시()를 사용하면, 큰따옴표나 작은따옴표를 원하는 만큼 포함시킬 수 있음!

  • 문자열 변수에 덧셈(+)을 이용하면 문자열이 더해져서 연결됨.
  • 문자열에 대해서도 리스트와 마찬가지로 인덱싱, 슬라이싱 이용가능!
  • 다만 문자열은 특정 인덱스의 값을 변경할 수는 없음.

🐼 튜플 자료형 : 한번 선언된 값 변경 불가 (한번 값 할당 되면 끝!)
* 리스트는 값 변경 가능 but 튜플은 안돼.
리스트는 [대괄호], 튜플은 (소괄호)
튜플은 리스트에 비해 상대적으로 공간 효율적!

  • 튜플을 사용하면 좋은 경우?
  • 서로 다른 성질의 데이터를 묶어서 관리해야 할 때
  • 데이터의 나열을 해싱의 키 값으로 사용해야 할 때
  • 리스트보다 메모리를 효율적으로 사용해야 할 때

🐼 사전 자료형(딕셔너리) : 키와 값의 쌍을 데이터로 가지는 자료형

  • 변경 불가능한 자료형을 키로 사용가능
  • 그 키값을 통해 원하는 자료에 접속 가능
a = dict()
a['홍길동'] = 97
a['이순신'] = 98

print(a)

b = {
	'홍길동' : 97,
    '이순신' : 98
    }
    
print(b)
print(b['이순신'])

key_list = list(b.keys())
print(key_list)

🐼 집합 자료형

  • 중복 허용 안함
  • 순서 없음
    -> 집합 자료형을 데이터의 존재여부를 체크할 때 사용함!
  • 리스트나 문자열을 이용해 초기화함!
    -> 이 때, set()함수 사용
data = set([1,1,2,3,4,4,5])
print(data)

data = {1,1,2,3,4,4,5} # 중괄호를 써주기만해도 중복을 제거해쥼!
print(data)
  • 합집합, 교집합, 차집합 제공!

🌺 사전 자료형과 집합 자료형의 특징

  • 리스트나 튜플은 순서가 있기 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있음.
  • 사전 자료형(딕셔너리)과 집합자료형은 순서가 없기때문에 인덱싱으로 값을 얻을 수 없음.

🙂 기본입출력 🙂

🐼 input, map 함수

  • input() 함수는 한 줄의 문자열을 입력 받는 함수
  • map() 함수는 리스트의 모든 원소에 각각 특정한 함수를 적용하고 싶을 때 사용.
    예시)
# 공백 기준으로 구분된 데이터를 입력 받을 때는 다음과 같이 사용함.
list(map(int, input().split()))
# 공백 기준으로 구분된 데이터의 개수가 많지 않다면, 다음과 같이 사용함.
a, b, c = map(int, input().split())
# 데이터의 개수 입력
n = int(input())
# 각 데이터를 공백을 기준으로 구분하여 입력
data = list(map(int, input().split()))

data.sort(reverse=True)
print(data)

# n, m, k를 공백 기준으로 구분하여 입력
n, m, k = map(int, input().split())

print(n, m, k)

🐼 빠르게 입력받으려면?

  • 사용자로부터 입력을 최대한 빠르게 받아야 하는 경우가 있음!
  • 파이썬의 경우 sys 라이브러리에 정의되어 있는 sys.stdin.readline() 메서드를 이용함.
  • 단, 입력 후 엔터(Enter)가 줄바꿈 기호로 입력되므로 rstrip() 메서드를 함께 사용함.
import sys #요거 임포트 넘 중요!

# 문자열 입력받기
data = sys.stdin.readline().rstrip()
print(data)

🐼 표준 출력방법?

  • 파이썬에서 기본출력은 print()
  • 여러개 출력하려면 콤마(,)를 이용해 띄어쓰기로 구분.
  • 기본적으로 줄바꿈이지만, 줄바꾸기 싫으면 !!!! < end="" > 라고 써주면됨!

🐼 f-string

  • 문자열 앞에 접두사 'f'를 붙여 사용함.
  • 중괄호 안에 변수명 기입해서 간단하게 문자열과 정수를 함께 넣을 수 있음!
answer = 7
print(f"정답은 {answer}입니다.")

🙂 조건문과 반복문 🙂

  • 조건문은 프로그램의 흐름을 제어하는 문법
  • 조건문을 이용해 조건에 따라서 프로그램의 로직을 설정 가능!

🐼 조건문 기타

  • A in 리스트, 튜플, 문자열, 딕셔너리

  • A not in 문자열, 튜플, 문자열, 딕셔너리

  • 아무것도 처리하고 싶지 않을 때, pass 키워드 사용

a = 50

if a >= 30:
	pass
else:
	print("a < 30")

🐼 반복문

  • while문과 for문 어떤걸 사용해도 상관없지만 for문 쓰는게 더 효율적!

  • while문

i = 1
result = 0
#i가 9보다 작거나 같을 때 아래 코드를 반복적으로 실행
while i <= 9:
	result += i
    i += 1
    
print(result)
  • for문
for 변수 in 리스트:
	실행할 소스코드
array = [9,8,7,6,5] #리스트, 튜플 아무거나 상관없음~~
for x in array:
	print(x)
  • for문에서 연속적인 값을 차례대로 순회할 때는 range()를 주로 사용함.
result = 0

#i는 1부터 9까지의 모든 값을 순회
for i in range(1,10):
	result += i
print(result)
  • continue 키워드
result = 0

for i in range(1,10):
	if i % 2 == 0:
    	continue      #짝수는 건너뛰고~!
    result += i       #홀수일때만!!!!!
    
print(result)
  • break 키워드 (반복문 즉시 탈출하고 싶을 때!)
i = 1
while True:
	print("현재 i의 값:", i)
    if i == 5:
    	break
    i += 1
  • 이중 for문(구구단 예제)
for i in range(2,10):
	for j in range(1,10):
    	print(i, "X", j, "=", i*j)
    print()

🙂 함수와 Lambda표현식 🙂

🐼 함수

  • 함수란 특정한 작업을 하나의 단위로 묶어 놓은 것
  • 함수 종류: 내장함수(파이썬이 기본적으로 제공하는 함수)
    사용자 정의 함수(개발자가 직접 정의해서 사용할 수 있는 함수)
  • 함수 정의
  • 매개변수: 함수 내부에서 사용할 변수
  • 반환 값: 함수에서 처리 된 결과를 반환
def 함수명(매개변수):
	실행할 소스코드
    return 반환 값
#예시1
def add(a,b):
	return a+b
print(add(3,7)

#예시2
def add(a,b):
	print("함수의 결과:", a+b)
    
add(3,7)
  • 파라미터 직접 지정하기(가능함!)
def add(a,b):
	print("함수의 결과", a+b)
    
add(b=3,a=7)
  • global 키워드(함수 안에서 사용되는 변수가 함수 바깥에 있는 변수와 동일하게 처리되도록 만들고 싶다면!)
a = 0

def func():
	global a
   	a += 1
for i in range(10):
	func()
    
print(a)
  • 파이썬에서 갖는 여러개의 반환 값
def operator(a,b):
	add_var = a+b
    subtract_var = a-b
    multiply_var = a*b
    divide_var = a/b
    return add_var, subtract_var, multiply_var, divide_var
    
a, b, c, d = operator(7,3)
print(a, b, c, d)

🐼 Lambda 표현식

  • 함수를 간단하게 작성가능! 한줄에~!
def add(a,b):
	return a+b
    
# 일반적인 add() 메서드 사용
print(add(3,7))

# 람다 표현식으로 구현한 add() 메서드
print(lambda a,b: a+b)(3,7))
  • 많이 사용되는 Lambda 방식
# 방식1
array = [('홍길동', 50),('이순신',32),('아무개',74)]

def my_key(x):
	return x[1] # 튜플이 주어졌을 때 두번째 원소를 return하도록 명시.
    
print(sorted(array, key=my_key)) #정렬기준을 key속성의 값으로 넣어줌으로써 정렬을 수행.
print(sorted(array, key=lambda x: x[1]))
# 방식2
list1 = [1,2,3,4,5]
list2 = [6,7,8,9,10]

result = map(lambda a, b: a+b, list1, list2)

print(list(result)
profile
개발 기록

0개의 댓글