-
Notifications
You must be signed in to change notification settings - Fork 0
/
문법정리.txt
255 lines (195 loc) · 7.75 KB
/
문법정리.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
a = float(input()) //실수입력
b = round(a, 2) //소수점 3번째에서 반올림처리해서 2번째까지만 나타내기
print('%.2f' % b) //소수점 둘째자리까지만 나타내기
input()은 입력받은걸 문자열로 나타냄
input().split()은 입력받은 문자열을 공백으로 나눠서 리스트로 만듬
map(int,input().split())은 만들어진 리스트의 모든원소에 int 함수 적용
list(map(int,input().split()))는 모든 원소에 int함수 적용시킨 결과를 다시 리스트로 만듬
y, m, d = map(int, input().split('.')) //.으로 나눠진걸 int로 만들고
print('%d.%02d.%02d' % (y, m, d)) // 문자열형식으로 나타낼건데 들어갈 변수는 따로 %로 넣는다 %02
a,b=input().split('.') //.을 기준으로 문자열 두개를 받는데
print(a+b) 하면 붙여서 문자열로나오는데
print(a,b) 하면 a나오고 한 칸 띄고(스페이스) b가 나온다
data = input()
for i in range(len(data)): //문자열도 배열이니까 인덱스 존재
print("["+str(int(data[i])*(10**(len(data)-(i+1))))+"]") // **은 제곱,int로 바꾼거는 +로 출력하려면 다시 str해주자
enumerate 함수는 index랑 value를 튜플로 반환하는데 보통 for문에서 많이 쓰인다.
dict1 = {'이름': '한사람', '나이': 33}
data = enumerate(dict1)
for i, key in data:
print(i, ":", key, '->', dict1[key])
print()
하면
0 : 이름 -> 한사람
1 : 나이 -> 33
나온다
2진수 : bin()
8진수 : oct()
16진수 : hex()
counter함수
find 함수는 찾는 문자가 문자열 안에 포함되지 않은 경우 -1을 출력하지만 index함수는 >AttributeError가 발생한다
리스트 자료형이면 index 사용(찾으려는 값이 있다는 가정)
for x in alphabet:
print(s.find(x), end=' ') //붙여서 쓰는법
파이썬처럼 생각하자
여러번 반복 출력은 곱하기를 사용해도된다.
for i in range(len(s)):
print(s[i]*r, end='')
a[1:4]는 a[1]~a[3]까지 가져오고 이것을 슬라이싱이라한다.
슬라이싱
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ 1 : ]
['b', 'c', 'd', 'e']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ -3 : ]
['c', 'd', 'e']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ : 2 ]
['a', 'b']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ : -1 ]
['a', 'b', 'c', 'd']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ 2 : 4 ]
['c', 'd']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ -4 : -2 ]
['b', 'c']
>>> a = ['a', 'b', 'c', 'd', 'e']
# 인덱스 1 ~ 3까지의 값을 거꾸로 가져오기
>>> a[ 3 : 0 : -1]
['d', 'c', 'b']
>>> a = ['a', 'b', 'c', 'd', 'e']
# 2칸씩 이동하면서 가져옵니다.
>>> a[ : : 2 ]
['a', 'c', 'e']
>>> a = ['a', 'b', 'c', 'd', 'e']
# 3칸씩 이동하면서 가져옵니다.
>>> a[ -5 : : 3 ]
['a', 'd']
>>> a = ['a', 'b', 'c', 'd', 'e']
# 전체를 거꾸로 가져옵니다.
>>> a[ : : -1 ]
['e', 'd', 'c', 'b', 'a']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ 3 : : -1 ]
['d', 'c', 'b', 'a']
리스트 컴프리헨션 : 리스트를 초기화하는 방법
1) 0~19까지 수 중 홀수만 포함하는 리스트
array=[i for i in range(20) if i%2==1]
2) 1~9까지 수의 제곱 값을 포함하는 리스트
array=[i*i for i in range(1,10)]
중요) 2차원 리스트 초기화
n=3 m=3
array=[[0]*m for _ in range(n)]
upper()함수는 문자열을 대문자로 바꿔준다.
set함수가 중복제거해준다.
안되는 경우에 대해 생각해보자+슬라이싱 1316.py
array=[]
reverse 함수는 return 하는게 없다. 그냥 바꿔버림
array.reverse() 하면 array가 바뀜
reversed(array)하면 ‘listreverseiterator’를 반환
list로 출력하려면 list(reversed(array))처럼 사용하자
sort 함수도 마찬가지 return 하는게 없다.
sorted(array)하면 새로운 리스트 반환
array=sorted(array,reverse=True) 하면 내림차순 정렬
sorted(array,key=setting) 하면 setting 함수가 정렬기준이된다.
def seeting(data):
return data[1] //예시로 1번째 인덱스 return 하는 함수
result = sorted(array,key=lambda student:student[1])
sorted할건데 student를 매개변수로해서 return student[1]을 기준으로 오름차순
다중 정렬조건
answer=sorted(data_list,key=lambda x:(x[1],x[0]))
이면 x[1]로 정렬후에 x[0]으로 한번 더 정렬한다.
a[i],b[i]=b[i],a[i] //swap 연산
파이썬의 기본 정렬 함수가 O(nlog(n))
input()과 print()함수를 사용하지 않고
import sys를 통해서 system input과 system output을 사용
sys.stdin.readline()))
sys.stdout.write(str(i)+'\n')
시간초과 해결함
알파벳 sort는 앞글자기준 같으면 그다음글자 비교해서 sort함
lower(),upper() 함수는 실행만시키면 원본 문자열은 변화 없음 lower하거나 upper한걸 return함
#zip함수
Number = [1,2,3,4]
Name = ['hong','gil','dong','nim']
Number_Name = list(zip(Number,name))
print(Number_Name)
결과 : [(1 ,'hong'), (2 ,'gil'), (3 ,'dong'), (4 ,'nim')]
Number = [1,2,3,4]
Name = ['hong','gil','dong','nim']
dic = {}
for number , name in zip(Number,Name):
dic[number] = name
print(dic)
결과 : {1 : 'hong' , 2 : 'gil' , 3 : 'dong' , 4 : 'nim'}
사전자료형
data = {'A':'best!!!', 'B':'good!!', 'C':'run!', 'D':'slowly~'}
print(data['A']) 하면 'best!!!'
data.keys()하면 dict_keys(['A', 'B', 'C', 'D'])
data.values()하면 dict_values(['best!!!', 'good!!', 'run!', 'slowly~'])
location = {'1': (0, 0), '2': (0, 1), '3': (0, 2),
'4': (1, 0), '5': (1, 1), '6': (1, 2),
'7': (2, 0), '8': (2, 1), '9': (2, 2),
'*': (3, 0), '0': (3, 1), '#': (3, 2)}
여기에서 '#':(3,2)에서 2만 뽑아내고 싶으면
location['#'][1]이 2를 의미한다.
import math하면
math.sqrt(n)하면 n의 제곱근
a=pow(2,3) 하면 2의3제곱인 8
pow(n,0.5) 하면 루트n과 같음
a가 1.46545465일때 int(a)하면 1
print(result) ==> ['A','B','C','K','K','13']
print(''.join(result)) ==>ABCKK13
붙여쓰기 할때 씀
a='hijino'
b=list(a)
b.reverse()
b=''.join(b)
print(b) 하면
onijih
a='hijino'
b=a[::-1]
print(b) 하면
onijih
이진탐색 할 때 생각할 것 (백준 1920.py참조)
1. 탐색할 배열이 정렬되었는가
2. 종료 조건이 존재하는가
입력이 10만이상이면
input() 대신
from sys import stdin
input()자리에 sys.stdin.readline() 써보자
꿀팁 저장소:https://breakcoding.tistory.com/109
dfs 할 때 생각할것
row,column 으로 2차원 리스트만들기
value로 key값 찾는함수
def get_key(val):
for key, value in dic.items():
if val == value:
return key
return "There is no such Key"
key=stdin.readline().rstrip() // stdin.readline()에서 입력이 엔터치고 들어올때 즉 한줄씩 들어올때는 \n 제거를 위해 rstrip() 사용해야한다.
answer = list(set(not_listened) & set(not_seen)) // not_listened 리스트와 not_seen 리스트에서 중복되는 값을 리스트로 바로 만들어줌
for 문 돌면서 in 써서 안에 있는지 체크하는거 보다 훨씬 빠름
최소 힙, 최대 힙
from heapq import heappop,heappush 사용하면 heapq.heappop이 아니라 그냥 heappop 사용가능(heappush도 마찬가지)
array=[] 만들어두고
num=int(input())일때
heappush(array,num),heappop(array)하면
default 최소힙으로 부모노드가 더 작게 push, 가장 작은값 pop 해줌
*최대힙*
heappush(array,(-num)) //음수로 넣어주면 최대힙 완성
-1*heappop(array) 하면 가장 큰 값 나오고 음수로 저장해뒀으니까 -1 곱해서 나와야 원하는 값
코테 후 알아볼것
key=lambda x:-x reverse=True
1.문자열처리
2.브루트포스
3.dfs,bfs
4.해쉬
check=list(map(lambda x: True if x>=K else False,heap))
if all(check):
cnt+=1
answer=cnt
break
else:
cnt+=1