이것이 코딩테스트다 (1)
🙂 자료형 🙂
- 모든 프로그래밍은 결국 데이터를 다루는 행위
- 파이썬 자료형: 🍟 정수형, 실수형, 복소수형, 문자열, 리스트, 튜플, 사전 등 🍟
- 파이썬의 자료형은 필수적으로 알아두어야!
🌺 정수형 (정수를 다루는 자료형)
양의 정수, 음의 정수, 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)
Author And Source
이 문제에 관하여(이것이 코딩테스트다 (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@majaeh43/이것이-코딩테스트다-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)