알고리즘 (JAVA)

[python] 코딩테스트를 위한 파이썬 문법 정리 - 개발자 배찌

개발자 배찌 2022. 11. 27. 21:45
728x90
a=0.3 + 0.6
print(round(a,4))

if rount(a,4) == 0.9:
print(True)
else:
print(False)

#나누기
print(a/b)
#나머지
print(a%b)
#몫
print(a//b)


리스트 자료형
-여러개의 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형

 

#직접 데이터를 넣어 초기화
a=[1,2,3,4,5,6,7,8,9]
print(a)

#네번째 원소만 출력
print(a[3])

#크기가 n이고 모든값이 0인 1차원 리스트 초기화
n=10
a=[0]*n
print(a)


리스트에서 연속적인 위치를 가진 원소들을 가져와야 할 때는 슬라이싱을 이용
대괄호 안에 콜론(:)을 넣어서 시작인덱스와 끝인덱스 설정 가능
끝인덱스는 실제인덱스보다 1을 더 크게 설정.

a=[1,2,3,4,5,6,7,8,9]
#네번째 원소만 출력
print(a[3])
#두번 째 원소부터 네번째 원소까지  출력
print(a[1:4])


리스트 컴프리헨션
-2차원 리스트를 초기화 할 때 효과적으로 사용됨

#0부터 9까지의 수를 포함하는 리스트
array = [i for i in range(10)]
print(array)     #[0,1,2,3,4,5,6,7,8,9]


#0부터 19까지 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i%2 ==1]
print(array) #[1,3,5,7,9,11,13,15,17,19]

#1부터 9까지 수들의 제곱값을 포함하는 리스트
array = [i * i for i in range(1,10)]
print(array) #[1,4,9,16,25,36,49,64,81]

#n*m크기의 2차원 리스트 초기화
n=4
m=3
array = [[0] * m for _ in range(n)]
print(array) #[[0,0,0],[0,0,0],[0,0,0],[0,0,0]]



언더바는 언제사용하나요?
파이썬에서는 반복을 수행하되 반복을 위한 변수의 값을 무시하고 자 할 때 언더바(_)를 자주사용
ex)
"Hello World"를 5번 출력하기
 for _ in range(5):
print("Hello World");

append()   리스트에 원소를 하나 삽입할 때 사용 (가장 뒷쪽에)
sort()  변수명.sort() 자동정렬기능(오름차순)
변수명.sort(reverse = True) 내림차순
reverse() 리스트 원소의 순서를 모두 뒤집어 놓는다
insert() 특정한 인텍스 위치에 원소를 삽입할 때 사용
count()  변수명.count(특정값) 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 때 사용
remove()  변수명.remove(특정값) 특정한 값을 갖는 원소를 제거하는데, 값을 가진 원소가 여러개면 하나만 제거


리스트에서 특정값을 가지는 원소를 모두 제거하기

a=[1,2,3,4,5,5,5]
remove_set = [3,5] #집합자료형
#remove_list에 포함되지 않은 값만을 저장
result = [i for i in a if i not in remove_set]
print(result) #[1,2,4]



문자열처리

a = "Hello"
b= "World"
print(a + " " + b) #Hello World

a="String"
print(a*3) #StringStringString

a="ABCDEF"
print(a[2:4]) #CD


튜플 자료형

- 리스트와 유사하지만, 튜플은 한번 선언된 값을 변경할 수 없음.
- 리스트는 대괄호([])를 이용, 튜플은 소괄호(())를 이용
- 튜플은 리스트에 비해 상대적으로 공간 효율적임.
- 서로 다른 성질의 데이터를 묶어서 관리해야할 때,
 (최단경로 알고리즘에서는 비용, 노드번호)의 형태로 튜플자료형을 자주 사용

- 데이터의 나열을 해싱(Hashing)의 키값으로 사용해야 할 때
 (튜플은 변경이 불가능하므로 리스트와 다르게 키값으로 사용될 수 있음)
- 리스트보다 메모리를 효율적으로 사용해야 할 때


사전자료형
키(key) 와 값(value)의 쌍을 데이터로 가지는 자료형.
 - '변경불가능한 자료형'을 키로 사용할 수 있다.
 - 앞서 다루었던 리스트나 튜플이 값을 순차적으로 저장하는 것과는 대비됨.
파이썬의 사전자료형은 해시테이블(Hash Table)을 이용하므로 데이터의 조회 및 수정에 있어서 O(1)의 시간에 처리할 수 있다.

data=dict() #사전자료형 초기화
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
print(data) #{'사과' : 'Apple', '바나나' : 'Banana', '코코넛':'Coconut'}
if '사과' in data :
print(" '사과'를 키로 가지는 데이터가 존재합니다")


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

key_list = b.keys()
print(key_list) ` #dict_keys(['홍길동','이순신'])
key_list2 = list(b.keys())
print(key_list2) #{'홍길동:97', '이순신':98}




집합자료형
- 중복을 허용하지 않음
- 순서가 없다
- 집합은 리스트 혹은 문자열을 이용해서 초기화 할 수 있다.
이때 set()함수를 이용
- 혹은 중괄호({})안에 각원소를 콤마(,) 를 기준으로 구분하여 삽입함으로써 초기화 할 수 있다.
데이터의 조회 및 수정에 있어서 O(1)의 시간에 처리할 수 있다

#집합 자료형 초기화 방법1
data = set([1,1,2,3,4,4,5])
print(data)  #{1,2,3,4,5}
#집합 자료형 초기화 방법2
data = {1,1,2,3,4,4,5}
print(data)  #{1,2,3,4,5}

집합 자료형의 연산
a=set([1,2,3,4,5])
b=set([3,4,5,6,7])
#합집합
print(a | b) #{1,2,3,4,5,6,7}
#교집합
print(a & b) #{3,4,5}
#차집합
print(a - b) #{1,2}

집합 자료형 관련 함수
data = set([1,2,3])
print(data)  #{1,2,3}
#새로운 원소 추가
data.add(4)
print(data) #{1,2,3,4}
#새로운 원소 여러개 추가
data.update(5,6)
print(data) #{1,2,3,4,5,6}
#특정한 값을 갖는 원소 삭제
data.remove(3)
print(data) #{1,2,3,4,5,6}


사전자료형과 집합자료형의 특징
- 리스트나 튜플은 순서가 있기때문에 인덱싱을 통해 자료형의 값을 얻을 수 있다.
- 사전자료형과 집합자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다.
 (사전의 key 혹은 집합의 원소(elemenet) 를 이용해 O(1)의 시간복잡도로 조회함)


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

#출력할 변수들
a=1
b=2
print(a,b)
print(7, end=" ")
print(8, ned=" ")
anser=7
print("정답은 " + str(answer) + "입니다.")

#1 2
#7 8 정답은 7입니다.

# f-string예제
파이썬 3.6부터 사용가능.
문자열 앞에 접두사 'f'를 붙여 사용
answer=7
print(f"정답은 {answer} 입니다.") #정답은 7입니다.



조건문 예제

x=15
if x>= 10:
print("x >= 10")
print("정답입니다")
#파이썬에서는 코드의블록을 들여쓰기로 지정함.
# x >= 10
# 정답입니다



조건문의 기본적인 형태
if ~ elif ~ else

논리연산자
X and Y  X와 Y가 모두 참일 때 참
X or Y  X와 Y중에 하나만 참이여도 참
not X  X 가 거짓일 때 참

파이썬의 기타 연산자
in 연산자와 not in 연산자
리스트, 튜플, 문자열, 딕셔너리 모두에서 사용 가능.
x in 리스트 리스트 안에 x가 들어가있을 때 참
x not in 문자열 문자열 안에 x가 들어가있지 않을때 참

파이썬의 pass 키워드
아무것도 처리하고 싶지 않을 때 pass 사용
예시)

score = 85
if scroe >=80:
pass
else 
print('성적이 80점 미만입니다')
print('프로그램 종료')

#프로그램 종료

 

조건문의 간소화1
if score >= 80: result = "Success"
else : result = "Fail"

조건문의 간소화2
score=85
result = "Sucess" if scroe >=80 else "Fail"