Code about AI/Python

코드업 Python 기초 100제 정리

도비(Doby) 2022. 6. 26. 14:27

C++을 공부했던 것처럼 CodeUp 기초 100제를 통해 Python 기본 문법을 공부했습니다.

PS를 하면서 Python을 써보고 싶다거나 다른 프로그래밍을 할 때, Python을 쓸 일이 많아질 거 같아 더 이상 미룰 수 없다고 생각했고, 지금이 최적의 타이밍이 아닌가 했습니다.

 

풀면서 배워두어야 할 문법들에 관련된 문제들로 정리 해두었습니다.


6005

print("\"Hello World\"")

큰 따옴표나 작은따옴표는 C++처럼 앞에 \(역슬래시)를 붙여주면 출력할 수 있습니다.


6011

n = float(input())
print(n)

파이썬에서 실수형은 float을 사용합니다. C++에서는 범위에 따라 double이나 long double을 사용할 일이 많았는데 파이썬은 없는 거 같군요.


6015

a, b = input().split()

a = int(a)
b = int(b)
print(a)
print(b)

파이썬에서 한 줄에 여러 정수를 입력받으려면 input().split()을 이용하여 입력받을 수 있습니다. 별다른 타입 변환 없이 받았기 때문에 a = int(a)를 통해 타입 변환을 해줍니다.


6016

a, b = input().split()

print(b, a)

줄 넘김 없이 출력하는 방법은 print에서 한번에 ,(콤마)를 통해 출력하는 방법이 있습니다. 공백 없이도 출력할 수 있지만 이는 다른 문제에서 나오기 때문에 넘어가겠습니다.


6018

a, b = input().split(":")

print(a, b, sep = ":")

input().split(":")는 :를 기준으로 잘라서 입력을 받겠다는 뜻입니다. 이전엔 비워뒀으니 공백이 디폴트 값이라는 것을 알 수 있습니다.

print(a, b, sep = ":")에서 sep는 separator를 뜻하고, 변수들 사이에 sep를 끼워 넣어 출력한다는 뜻입니다. 이전에도 비워두고 출력했을 때, 공백으로 구분되었으니 디폴트 값이 공백이었다는  것을 알 수 있습니다.


6022

s = input()
print(s[0:2], s[2:4], s[4:6])

[a:b]란 a에서 b - 1까지를 뜻합니다. (물론 사이에 공백은 없습니다.)


6027

n = int(input())

print('%x' %n)

10진수를 입력받아 16진수(소문자)를 출력할 땐 '%x'를 활용하여 출력할 수 있습니다. %x뒤엔 어떤 변수를 뜻하는지 알려주기 위해 %n을 적어둡니다.

대문자일 때는 '%X'로 적으면 되겠습니다.


6029

n = input()
n = int(n, 16)
print('%o' %n)

입력에서 몇 진수로 입력받거나 int형 변환을 할 때, 진수로 변환이 가능합니다. int형 변환에서 (바꾸는 수, 몇 진수)의 형태로 작성해주면 됩니다.


6030

n = ord(input())
print(n)

입력받아서 유니코드(10진수)로 변환하는 함수는 ord()입니다.


6031

c = int(input())
print(chr(c))

10진수를 입력받아 chr()를 통해 유니코드로 변환해줄 수 있습니다.


6036

w, n = input().split()
print(w * int(n))

정수*문자열 or 문자열*정수는 문자열을 정수번 반복했다는 뜻입니다.


6042

a = float(input())
print(format(a, '.2f'))

소수점을 몇 자리까지 정해서 출력하는 방법은 format함수를 사용하면 됩니다. .2f는 3번째 자리에서 반올림하여 2번째 자리까지 나타내겠다는 뜻입니다.


6052

n = int(input())
print(bool(n))

bool(n)은 n이라는 수가 True인지 False인지 판단하는 함수입니다. 0이 아니면 True, 0이면 False가 반환됩니다.


6053

n = bool(int(input()))
print(not n)

not 연산은 해당하는 값이 True라면 False, False라면 True를 반환합니다. 값을 not 연산시키는 게 아닌 논리 값을 돌려줍니다.


6056

a, b = input().split()
a = int(a)
b = int(b)
print(bool(a) ^ bool(b))

파이썬에서 XOR은 ^기호를 사용합니다.

물론 논리 값이 아닌 숫자에도 사용 가능합니다.


6059

n = int(input())
print(~n)

not과 ~(tilde)를 가끔 헷갈리기도 합니다. not은 논리 연산자 ~은 bitwise 연산자라고 생각하면 쉽습니다.


6063

a, b = input().split()
a = int(a)
b = int(b)
c = int(a if (a >= b) else b)
print(c)

Python에서 Ternary Operator를 나타내는 방법입니다.

=>> (True일 때 value) if (조건식) else (False일 때 value)


6074

c = ord(input())
t = ord('a')

while t <= c:
    print(chr(t), end = ' ')
    t += 1

앞서 다룬 개념이지만 이를 응용한 문제이기에 가져와봤습니다.

입력받은 값을 유니코드 정수 값으로 바꾸고, 정수 값보다 크거나 작은 값들을 모두 유니코드로 바꾸어(chr()) 출력합니다.


6081

n = int(input(), 16)

for i in range (1, 16):
    print('%X'%n, '*%X'%i, '=%X'%(n * i), sep = '')

진수 입력 방법이나 출력 방법도 잊지 않기에 좋은 문제였습니다.


6093

n = int(input())

li = list(map(int, input().split()))

for i in range(n - 1, -1, -1):
    print(li[i], end = ' ')

range(시작값, 끝값, 증감값)에 해당하는 parameter를 알고, range는 [시작, 끝) 임을 안다면 반대로 출력할 수도 있다는 걸 알게 됩니다.


6095

d = []
for i in range(0, 20):
    d.append([]) # 리스트 안에 다른 리스트 추가
    for j in range(0, 20):
        d[i].append(0)

n = int(input())

for i in range(0, n):
    x, y = input().split()
    x = int(x)
    y = int(y)
    d[x][y] = 1

for i in range(1, 20):
    for j in range(1, 20):
        print(d[i][j], end = ' ')
    print(end = '\n')

Python에서 2차원 배열을 선언하는 방법이 있습니다. 위와 같이 반복문을 통해 append를 사용하여 선언하는 방법이 있고, 아래와 같이 문법을 활용하여 선언하는 방법도 있습니다.

#declaration
d = [[0 for j in range(0, 20)] for i in range(0, 20)]

#print
for i in range(0, 20):
    for j in range(0, 20):
        print(d[i][j], end = ' ')
    print(end = '\n')

확실히 한 줄로 짜는 게 더 깔끔합니다. 그리고, append 메서드는 C++ vector의 push_back과도 비슷하게 느껴집니다.


간단하게나마 문법을 배웠지만 PS를 하면서 필요한 문법, 여러 패키지의 사용(numpy, pandas, matplotlib 등)과 같은 여러 가지 상황에서 더 공부를 해야 합니다.

728x90