✨내가 공부하기 위한 기록!
✔작성 방법
1. 시작 부분에 빠르게 입력을 받을 수 있는 코드 작성
import sys
input = sys.stdin.readline
2. 값 입력받기
1) 여러 숫자를 받을 때
a, b, c = map(int, input().split())
2) 주어지는 입력값을 리스트에 담아 받을 때
a = list(map, int(input().split()))
3) 문자열 입력 받을 때
a = input().rstrip()
4) 문자열 여러 줄 입력받을 때 (1)
* input() for _ in range(n)
# ABCDE
# BCDEF
# FABCE
str = [input() for _ in range(3)]
# str[0] = ABCDE, str[1] = BCDEF, str[2] = FABCE
5) 2차원 배열을 입력받기
# 1 2 3 4 5
# 6 7 8 9 0
# 5 4 3 2 1
arr = [list(map, int().split()) for _ in range (3)]
# arr[0][0] = 1, arr[0][1] = 2, arr[0][2] = 3, arr[0][3] = 4, arr[0][4] = 5
# arr[1][0] = 6, arr[1][1] = 7, arr[1][2] = 8, arr[1][3] = 9, arr[1][4] = 0
# arr[2][0] = 5, arr[2][1] = 4, arr[2][2] = 3, arr[2][3] = 2, arr[2][4] = 1
3. if 사용할 때는 조건에 맞지 않아 break를 주어야 할 때를 먼저 작성하면 편하다.
while True:
a, b = map(int, input().split())
if a == 0 or b == 0:
break #먼저 해당되지 않는 부분을 작성
if b % a == 0:
print("multiple")
elif a % b == 0:
print("factor")
else:
print("neither")
4. for 문 거꾸로 반복하는 방법
for i in range(n, 0, -1): #n부터 0까지 1씩 감소함
5. 십의 자리, 일의 자리를 따로 뽑는 방법
n = int(input())
t = n #입력 값을 그대로 변수로 쓰기 보다는 새로운 변수로 지정한 뒤 코드 작성
a = t // 10 #a는 십의 자리 숫자
b = t % 10 #b는 일의 자리 숫자
6. 아스키 코드 변환 (ord(), chr() 사용)
a = input().rstrip()
print(ord(a)) #문자 입력시 아스키코드 숫자 출력
b = int(input())
print(chr(b)) #숫자 입력시 문자 출력
7. ascii_lowercase로 'abced...xyz'까지 이어지는 문자열을 가져옴
import string
for x instring.ascii_lowercase:
print(x, end = ' ')
#a b c d e f g h i j k l m n o p q r s t u v w x y z 출력
8. 문자열, 리스트 내 원소 개수 찾기 (count)
a = 'hello'
for x in 'aeiou':
print(a.count(x))
#출력
0 #a 0개
1 #e 1개
0 #i 0개
1 #o
0 #u
9. 리스트 안 일정한 숫자 넣기
# 1번
a = [x for x in range(n)]
# 2번
a = list(range(n))
10. 2차원 리스트 만들기
a = [[0]*10 for i in range(10)]
print(a)
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
11. 리스트 내 원소 출력하기
a = [1, 2, 3, 4, 5]
print(*a)
12. 딕셔너리 사용 시 편리한 작업
처음에 x라는 key가 있으면 +1, key가 없다면 key생성 후 값+1을 if절 사용하지 않아도 되는 패키지
import collections
d = collections.defaultdict(int)
✔자주 틀리는 것
1. or, and 사용할 때
if a == 0 or b == 0 #이렇게 변수 각각 조건을 적어 사용해야 맞다.
if a or b == 0 #이렇게 한꺼번에는 사용할 수 없다.
2. 다른 자료형끼리는 더할 수 없다.
a = int(input())
for j in range(1, 10):
print(a + '*' + j + "=" + a*j) #여기서 a, j는 정수, 나머지는 문자열이므로 같이 더할 수 없다.
print(a, '*', j, '=', a*j) 로 작성해야 한다.
3. 출력 시 한 줄에 모두 함께 출력할 때 vs 한 줄에 하나씩 출력할 때
print(i, end=" ") #end = " " 사용하면 끝에는 한 칸씩 띄어 출력한다.
print(*a, sep = '\n') ## \n 은 줄바꿈 명령어
4. 문자열 거꾸로 읽어오기 [ : : -1]
a = 'Python'
print(a[::-1])
#'nohtyP' 출력
5. 문자열도 인덱싱 가능하다
x = 'apple'
print(x[0])
# a 출력
6. 문자열은 immutable이다. 즉 문자열 개개인을 하나씩 바꿀 수 없다. 예를 들어 문자열 내에서 소문자는 대문자로, 대문자는 소문자로 바꾸고 싶은 경우, 새로운 문자열에 바뀐 것을 추가하는 식으로 들어가야 한다.
a = input().rstrip()
result = ""
for i in a:
if i.isupper():
result += i.lower()
else:
result += i.upper()
print(result)
## 잘못 된 코드
a = input().rstrip()
for i in a:
if i.isupper() == False:
i = i.upper()
elif i.isupper() == True:
i = i.lower()
print(a)
ㄷㄷ
'Python > BaekJoon' 카테고리의 다른 글
[코딩테스트 with 파이썬] 알고리즘 (1) - ArrayList와 LinkedList (1) | 2023.11.26 |
---|---|
[Baekjoon] 다시 풀어볼 문제들 (0) | 2022.10.05 |
[Baekjoon] 1000. A+B (0) | 2022.07.30 |