22일 화요일부터 25일 금요일까지
현재로서 1일1커밋은 지키고 있다.
파이썬을 처음 접하기 때문에 기본문법을 익히고 시작하자는 생각으로
codeup 사이트의 기초100제를 먼저 풀었다.
codeup.kr/problemsetsol.php?psid=23
하지만 4일동안 기초문법 100제만 풀고있는 나를 느꼈다...
좀더 분발해서 공부해야겠다는 생각이 든다ㅠㅠ
오늘은 기초 100제를 풀면서 자주 쓰일만한 파이썬 문법을 정리해보겠다.
1. 입력
1) 문자열 그대로 입력 : input()을 그대로 사용하면 된다.
temp = input()
2) 숫자 입력 : int 형으로 변환하면 된다.
temp = int(input())
3) 소수점 입력 : float 형으로 변환하면 된다.
temp = float(input())
4) 두가지 숫자 입력 : 아주 자주 쓰이는 문법이므로 익혀두는것이 좋다. split()의 경우 ()안의 문자를 기준으로 문자열을 나눈다는 뜻이다.
a, b = map(int, input().split())
5) 두가지 문자 입력 : int 형 대신에 str 형을 사용하면 된다.
a, b = map(str, input().split())
6) 리스트 입력 : 아주 자주쓰이는 문법이다. 한줄로 입력된 수를 리스트에 넣을때 사용된다.
a = list(map(int,input().split()))
7) 2차원 리스트 입력 : 2차원 배열을 입력받아 저장때 사용된다. 10행 크기인 경우 다음과 같이 사용하면 된다.
a = [list(map(int, input().split())) for _ in range(10)]
2. 출력
1) 한줄 문자열 출력 : 간단히 print 문을 사용하면 된다.
print("hello world!")
2) 특수문자 포함 출력 : \를 사용하여 출력하면 된다.
print("\"Hello world!\"")
3) 간단한 숫자 간격넣어 출력 - 간단한 문제에서 보통 값을 띄어서 출력하는 경우 사용된다.
print(a, b)
4) 소수점 조정 출력 : "%.2f" 처럼 몇번째 소수점까지 보일지를 표기하면 된다.
print("%.2f" %temp)
5) 자리수에 0 넣어 숫자 출력 : "%02d" 에서 0 : 빈자리를 0으로 채운다, 2 : 2칸을 차지한다는 뜻이다 - 시간출력시 간혹 사용된다.
print("%2d" %second)
print("%2d:%2d:%2d" %(h, m, s))
6) 유니코드 문자 출력 : \u 뒤에 해당 유니코드를 붙여 출력하면 된다.
print("\u250C\u252C\u2510")
7) 리스트 출력 : for 문과 end를 사용하여 간격을 두며 출력한다.
temp = [1,2,3,4,5]
for i in temp :
print(i, end=" ")
8) 2차원 리스트 출력 : for문을 두번 사용하여 출력한다.
temp = [[1,2,3,4,5],[6,7,8,9,0]]
for i in temp :
for j in i :
print(j, end=" ")
print()
3. 리스트 생성
크기가 정해진 리스트를 초기화하며 생성할 경우 사용된다.
1) 리스트 생성
temp = [0 for i in range(10)] #크기 10인 리스트
temp = [0] * 10 #크기 10인 리스트
2) 2차원 리스트 생성
temp = [[0 for i in range(10)] for j in range(10)] #10*10 리스트 생성
temp = [[0] * 10 for j in range(10)] #10*10 리스트 생성
3) 리스트 내용 접근 : 리스트[인덱스]로 사용하면 된다.
4. 연산, 비교
1) 덧셈 : +, 뺄셈 : -, 곱셈 : *, 나머지 : % - 다른언어와 동일하다.
a = int(2)
b = int(1)
print("%d %d %d" % (a+b, a-b, a%b))
2) 나눗셈 : 정수형 나눗셈과 실수형 나누셈이 다르다.
a = int(5)
b = int(3)
print(5//3) #1 출력
print(5/3) #1.6666... 출력
3) 거듭제곱 : ** 하나로 아주 간단하게 사용이 가능하다.
print(2**10) #2의 10승 = 1024
4) 동일여부 : ==, 비동일여부 : != - 다른언어와 동일하다.
a = int(1)
b = int(2)
print(a==b) #False
print(a!=b) #True
5) 크기비교 : <, >, <=, >= - 다른언어와 동일하다.
a = int(1)
b = int(2)
print(a<b)
print(a>b)
print(a<=b)
print(a>=b)
6) 비트연산자 : AND : &, OR : |, XOR : ^, NOT : ~ - 다른언어와 동일하다.
a=int(0)
b=int(1)
print(a&b)
print(a|b)
print(a^b)
print(~a)
7) switch 비슷한 문법 : key 값을 토대로 해당 value를 출력하는 식이다.
a = input()
print({
"12" : "winter", "1" : "winter", "2" : "winter",
"3" : "spring", "4" : "spring", "5" : "spring",
"6" : "summer", "7" : "summmer", "8" : "summer",
"9" : "fall", "10" : "fall", "11" : "fall"
}.get(a, -1))
5. 아스키코드
1) 문자 -> 해당 아스키코드 : ord 함수를 사용한다.
a = "a"
print(ord(a))
2) 아스키코드 -> 문자 : chr 함수를 사용한다.
temp = int(97)
print(chr(temp))
6. 진수 변환
2진수, 8진수, 10진수, 16진수 간의 변환이 필요할 경우 사용된다.
1) 10진수 -> 진수변환 : format 형식을 사용한다.
num = int(10)
print(format(num, 'b')) #2진수 출력
print(format(num, 'o')) #8진수 출력
print(format(num, 'x')) #16진수 소문자 출력
print(format(num, 'X')) #16진수 대문자 출력
2) 진수 -> 10진수변환 : int("진수", 진수숫자)) 형식을 사용한다.
temp = "1010"
print(int("0b"+temp, 2)) #2진수 -> 10진수 출력
temp2 = "13"
print(int("0o"+temp2, 8)) #8진수 -> 10진수 출력
temp3 = "FF"
print(int("0x"+temp3, 16)) #16진수 -> 10진수 출력
3) 진수 -> 진수변환 : 진수->10진수->진수 변환으로, format형식(int형식)) 순으로 사용한다.
#35
num = "FF"
print(format(int('0x'+num, 16), 'o')) #16진수 -> 8진수 변환
7. if문
if, elif, else 를 적절히 사용하면 된다.
score = int(input())
if score >= 90 :
print("A")
elif score >= 70 :
print("B")
elif score >= 40 :
print("C")
else :
print("D")
8. for문
1) 인덱스 사용하는 구문 : i를 통해 인덱스를 사용하며, range를 통해 반복회수를 정한다. - 리스트 정보로 접근시 자주 사용된다.
for i in range(5) :
print(i, end=" ")
2) 인덱스 없이 사용하는 구문 : i를 사용하지 않을때 _ 로 대신하여 넣는다.
for _ in range(5) :
print("hello")
3) 시작 인덱스를 0이아닌 다른수부터 사용할 경우 : range 안에 시작인덱스를 넣으면 된다. 참고로 뒷숫자는 인덱스 개념이므로 증가된 숫자를 넣어주어야 한다.
for i in range(1, 6) #1 ~ 5
print(i, end=" ")
4) 문자열, 또는 리스트의 인덱스 - 자주 사용되는 문법이다.
temp = [1,2,3,4,5]
for i in range(len(temp)) :
print(i, end=" ")
5) 2차원 리스트의 인덱스 - 자주 사용되는 문법이다.
temp = [[1,2,3,4,5],[6,7,8,9,0]]
for i in range(len(temp)) :
for j in range(len(temp[i])) :
print("%d,%d"%(i, j), end=" ")
print()
9. while 문
반복 조건을 잘 명시하면 된다.
a = int(input())
while a>0 :
print(a)
a = a-1
10. 파이썬 함수
1) 리스트 정렬 : 오름차순 - sort 함수를 그대로 사용한다.
a = list(map(int,input().split()))
a.sort()
2) 리스트 정렬 : 내림차순 - sort 함수에 reverse=True 속성을 넣는다.
a = list(map(int,input().split()))
a.sort(reverse=True)
3) 리스트의 크기 : len을 사용한다.
temp = [1,2,3,4,5]
print(len(temp)) #5
4) 최대공약수 : gcd 함수를 사용하면 된다. 다만 from math import gcd 를 적어야 한다.
from math import gcd
a = int(15)
b = int(6)
print(gcd(a,b))
11. 개인 정의 함수
def 함수명 : 형식을 사용하면 된다.
1) 최소공배수 lcm 함수 : 각각 곱한값에서 최대공약수를 한번 나누면 된다.
from math import gcd
def lcm(x, y) :
return x*y//gcd(x,y)
a, b = map(int, input().split())
print(lcm(a,b))
12. 기타
1) 복사 : 얕은복사와 깊은복사가 있다
a = [1,2,3,4,5]
b = a #얕은복사 : a와 b는 동일한 리스트이다
b[1] = -1
#a = [1,-1,3,4,5]
#b = [1,-1,3,4,5]
a = [1,2,3,4,5]
b = a[:] #깊은복사 : b는 a를 복제한 새로운 리스트이다
b[1] = -1
#a = [1,2,3,4,5]
#b = [1,-1,3,4,5]
2) 해당 문자 삭제 : for문과 del를 사용하는데, 인덱스 위치 변경에 주의를 해야한다.
temp = 0 #인덱스 조정을 위한 변수
a = ['a','a','b','c']
for i in range(len(a)) :
if a[i-temp] == 'a':
del a[i-temp]
temp += 1
for i in a:
print(i, end=" ") #[b, c]
마지막으로 모든문제의 풀이된 코드는 다음링크를 참고하면 되겠다.
github.com/CodingTestStudy/FreeDeveloper_Cote/tree/main/codeup_100
'나동빈 코딩테스트 정리' 카테고리의 다른 글
이것이 코딩 테스트다 - Chapter6 정렬 정리 (0) | 2021.01.04 |
---|---|
이것이 코딩 테스트다 - Chapter5 DFS, BFS 정리 (0) | 2021.01.03 |
이것이 코딩 테스트다 - Chapter4 구현 정리 (0) | 2020.12.29 |
이것이 코딩 테스트다 - Chapter3 그리디 정리 (0) | 2020.12.27 |
이것이 코딩 테스트다 - 코딩테스트란? (4) | 2020.12.22 |