코드업 파이썬 기초100제를 모두 풀었다. 6051~6098로 나눠서 복습한 내용을 정리했다.
📌 코드업 기초 100제 6001 ~ 6050 에서 이어지는 글입니다.
bool()
을 이용하면 식이나 값을 평가해 bool
자료형의 값을 출력해준다.bool()
평가값을 다루는 예약어로 not
, and
, or
이 있다.True
또는 False
로 계산된다.XOR
연산True
로 계산하는 논리연산을 XOR
(exclusive or, 배타적 논리합) 연산이라고도 부른다.c = bool(int(a))
d = bool(int(b))
print((c and (not d)) or ((not c) and d)) # XOR
not
연산not A and not B == not(A or B)
and
, or
, not
이 연산자다.!
를 붙이면 NOT 연산이 된다. 각각 AND, OR 연산에 해당하는 &&
, ||
기호도 마찬가지. (이게 더 편한데 ㅜㅜ)a, b = map(int, input().split())
print(not(bool(a) or bool(b)))
bitwise not
연산: ~
00000000 00000000 00000000 00000001
인데, 이 때 ~1
은 11111111 11111111 11111111 11111110
가 되며 -2를 의미한다.~n
= -n - 1
-n
= ~n + 1
이다.bitwise and
연산: &
|
를 사용하며, 두 비트열이 주어졌을 때 둘 중 하나라도 1인 부분의 자리를 1로 만든다.bitwise xor
연산: ^
[true_value] if [condition] else [false_value]
# C, JS 포함 다수 언어의 삼항 연산자 형태
[condition] ? [true_value] : [false_value]
# 파이썬의 삼항 연산자 형태
[true_value] if [condition] else [false_value]
# 세 정수 a, b, c 중 가장 작은 값을 출력, 삼항 연산자를 사용
a, b, c = map(int, input().split())
min = (a if a < b else b) if (a if a < b else b) < c else c
print(min)
a
와 b
를 비교한다.a
와 b
중 작은 값)가 c
보다 작다면, 그 값을 min
값으로 삼는다.c
가 min
값이다.프로그래밍 언어 소스코드 작성시 모든 요소들은:
어떤 순서에 따라 계산될 지 생각해보고, 여러 가지 연산자가 동시에 사용된 식이 있을 때 어떤 우선순위에 따라 순서대로 계산이 되는지 찾아보도록 한다.
format()
함수가 적용되는 { }
안에 진법을 명시할 수 있다. format({숫자}, '{진법}')
형태로도 가능하다.a, b, c = map(int, input().split())
day = 1
while (day % a or day % b or day % c):
day += 1
print(day)
원래는 유클리드 호제법을 사용해서 최대공약수를 구한 후 이것을 가지고 최소공배수를 구했었다.
유클리드 호제법으로 최대공약수를 구한다.
mod
연산한다.mod
연산의 결과(나머지)를 다시 mod
연산한다.mod
연산의 결과가 0이 될때까지 반복한다.def gcd(x, y):
if y == 0:
return x
else:
return gcd(y, x % y)
최대공약수를 이용해서 최소공배수를 구한다.
lcm = (x * y) // gcd(x * y)
다만 시간복잡도를 생각하지 않는다면, 위의 방법이 아니라 그냥 1부터 1씩 증가시켜 가면서 주어진 두 수로 나누었을 때 모두 나머지가 0인지 판단하면 간단하다.
arr = [0 for _ in range(n)]
arr = [{표현식} for {항목} in {반복가능 객체} if {조건문}]
reverse()
list
의 메소드list.method()
형태로 사용되는 것reversed()
iterator
객체의 형태로 반환한다list()
를 이용해서 리스트 자료형으로 변환해야 한다{리스트명}[::-1]
arr[y][x]
: y
번째 행의 x
번째 열x
를 조작해야 한다.y
를 조작해야 한다.