맞는데 왜 틀릴까..?

Language Syntax

파이썬 (Python)

안도일 2022. 1. 19. 18:32

sort
리스트.sort() 는 본체의 리스트를 정렬해서 변환
sorted(리스트) 는 본체 리스트는 내버려두고, 정렬한 새로운 리스트를 반환

2차원 리스트에서 2번째 원소 오름차순 정렬
stack.sort(key = lambda x:x[1])
ex) 백준 1931번

2차원 리스트에서 원하는 요소 찾기
리스트 컴프리헨션
newlist=[(i,j) for i in range(n) for j in range(m) if mylist[i][j]==1]

내림차순 정렬
stack.sort(reverse=True)

리스트 비우기 stack.clear()
리스트 요소 제거
인덱스로 del stack[index]
stack.pop(index)
값으로 stack.remove(value) 

print(5/2, 5//2, 5%2)
2.5 2 1

의미없는 소수점 제거하기
print ("%g" %(10.0/2) )

set()
집합으로 변환하여 리스트의 중복제거

2차원 배열 최댓값 찾기
max(map(max,배열이름)) 
-----------------------------------------------------------------------------------------------
리스트 복사
import copy
x = copy.deepcopy(list)

그냥 내장함수인 .copy를 한다면 가장 바깥쪽에 있는 리스트만 카피되어 안쪽 리스트는
같은 주소를 가리키게 됨 따라서 deepcopy를 이용해 리스트 전체를 copy해야함
-------------------------------------------------------------------------------------------------

딕셔너리 key, value값 리스트로 변환
a.key()
a.value()

최대공약수 
math.gcd(a,b)
최소공배수
math.lcm(a,b)
제곱근
math.sqrt(i)

딕셔너리
stack[a] = 'b'
key = a
value = b
stack={a:b}

format
a= 3
b = 1
c= 2
print('{0} = {1} + {2}'.format(a,b,c))
->3 = 1 + 2

enumerate
stack = ['a','b','c']
for i, j in enumerate(stack) 일떄
i = 0 j = a 이다

절댓값
abs()
-----------------------------------------------------------------------------------------------
2진수를 8진수로 변환
oct(int(input(),2)) #2진수를 입력받아 10진수로의 변환을 거쳐 다시 8진수로 변환
2진수로 변환 bin()
8진수로 변환 oct()
16진수로 변환 hex()
10진수로 변환 int()
---------------------------------------------------------------------------------------------------

재귀를 활용한 풀이를 할 때
sys.setrecursionlimit(10**6)
파이썬의 기본 재귀 깊이가 1000으로 매우 얕은 편이니 런타임에러를 방지하는 이 코드는 필수다.
----------------------------------------------------------------------------------------------------

반복문으로 여러줄을 입력 받아야 할 때
input()을 쓰게 되면 시간 초과가 발생하게 된다.
sys.stdin.readline()
ex) word = sys.stdin.readline().split()
    입력 : push 3 ->  word[0] = push          word[1] = 3
------------------------------------------------------------------------------------------------
Counter 딕셔너리 카운터
from collections import Counter
1. List = ["Hi", "How", "When"]
   print(Counter(List)) -> Counter( { "Hi":1, "How":1, "When":1 } )
2. value = "Hello"
   print(Counter(value)) -> Counter( { 'l':2, 'H':1, 'e':1, 'o':1 } )

Counter 내부 메소드
most_common()     Counter()에서 가장 빈도수가 높은 순으로 표시해줌
most_common(2)                     ''                                   2개 표시해줌
-> [ ( 'l' , 2 ), ( 'o' , 2) ]
*가장 많이 나온 단어 l을 추출 하고 싶다면 most_common(2)[0][0]


counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(counter['blue])
-->3
print(dict(counter))
-->{ 'red' : 2, 'blue' : 3, 'green' : 1 }
----------------------------------------------------------------------------------------------------
최댓값 최솟값 설정
mx = -sys.maxsize
mn = sys.maxsize

함수에서 리스트자체를 리턴해도됨 ex)백준 9370
--------------------------------------------------------------------------------------------
조합
서로 다른 n개에서 순서에 상관 없이 서로 다른 r개를 선택하는 것
[A,B,C] -> AB, AC, BC

mCn = m! / (m-n)!n!


from itertools import combinations

data = ['A', 'B', 'C']
result = list( combinations (data,2) ) #data에서 2개를 골라 모든 조합 구하기
--> [(A,B), (A,C), (B,C)]

 

 

itertools.combinations를 사용하면 45개의 숫자 줏 6개를 선택하는 경우의 수를 다음과 같이 구할 수 있다.

>>> import itertools
>>> it = itertools.combinations(range(1, 46), 6)

itertools.combinations(range(1, 46), 6) 는 1~45의 숫자 중에서 6개를 뽑아내는 경우의 수를 이터레이터로 리턴한다.



중복조합
from itertools import combinations_with_replacement

data = ['A', 'B', 'C']
result = list( combinations_with_replacement (data,2) ) 



백준 14502 참조
-----------------------------------------------------------------------------------------------
순열
서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것
[A,B,C] -> ABC, ACB, BAC, BCA, CAB, CBA

from itertools import permutations

data = ['A', 'B', 'C']
result = list( permutations (data,3) ) #data에서 3개를 골라 순서를 나열
--> [(A,B,C), (A,C,B), (B,A,C), (B,C,A), (C,A,B), (C,B,A)]

중복순열 
from itertools import product
data = ['A', 'B', 'C']
result = list( product (data, repeat = 3) ) 

https://velog.io/@insutance/Python-%EC%88%9C%EC%97%B4%EA%B3%BC-%EC%A1%B0%ED%95%A9-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC

출력 포맷 지정 예제

print("%5d %7d %07d %10s %7.3f" %(123, 456, 789, "python", 123.456789)

%5d : 총 5 칸 중 오른쪽으로 붙여서 출력 ex(  123)

%7d : 총 7 칸 중                ''               ex(    456)

%07d : 총 7 칸 중 오른쪽으로 붙이고 빈칸에 0 삽입 ex(0000789)

%10s : 총 10 칸 중 오른쪽으로 붙여서 출력 ex(    python)

%7.3f : 총 10 칸 중 소수점 3자리를 남기고 출력 ex(123.456)

 

정수 이진수 8진수 16진수 출력

for i in range(0, 257, 8):

    print(" {:4d} {:09b} {:#05o} {:#05X}"\ .format(i, i, i, i))

'Language Syntax' 카테고리의 다른 글

CSS  (0) 2022.01.19
Html  (0) 2022.01.19
Numpy  (0) 2022.01.19