나동빈 코딩테스트 정리

Phython 파이썬 기초문법 정리 - codeup 기초 100제

FDEE 2020. 12. 26. 12:38

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

 

CodingTestStudy/FreeDeveloper_Cote

INHA UNIV CODING STUDY GROUP. Contribute to CodingTestStudy/FreeDeveloper_Cote development by creating an account on GitHub.

github.com