목차
TIL
- 파이썬 알고리즘 문제풀이 강의 시작
- Sec.02-1 K번째 약수
- 백준 10872 팩토리얼
TIL
오늘 지원서를 제출했다. 수많은 검토가 있었고 많은 준비를 했기 때문에 여한이 없다. 남은 기간까지 코테 준비에 집중하자!!
지원서 제출 + 검토 시간 4 시간 내외, 알고리즘 강의 1시간 내외
파이썬 알고리즘 문제풀이 강의 시작(코딩 테스트 대비)
코딩 테스트 준비를 위해 오늘부터 강의를 듣기 시작했다. 섹션 0이 파이썬 기초문법, 선수지식으로 이뤄져 있는데, 선수지식강의부터 차근차근 듣기로 했다. 기초 문법을 다시 복습하면서, 알게 되는 것들도 많아서 정리를 해두는 게 좋을까 생각이 든다.
1. 변수와 출력 함수
'''
변수명 정하기
1) 영문과 숫자, _ 로 이루어진다.
2) 대소문자를 구분한다.
3) 문자나, _ 로 시작한다.
4) 특수문자를 사용하면 안된다. (&, % 등)
5) 키워드를 사용하면 안된다.(if, for 등)
'''
a = 1
A = 2
c = 3
print(a, A, c)
a = 1
A = 2
A1 = 3
print(a, A, A1)
a = 1
A = 2
A1 = 3
_b = 4
print(a, A, A1, _b)
# 주석
'''
여러줄 주석
'''
a, b, c = 3, 2, 1
print(a, b, c)
# 값 교환
a, b = 10, 20
print(a, b)
a, b = b, a
print(a, b)
# 변수 타입
# 메모리가 허용하는 만큼 크기 가능
a = 123455634654564566
print(a)
print(type(a))
# 실수형은 8바이트까지 저장 가능, 그 이상은 데이터 손실
a = 12.123456789123456789
print(a)
print(type(a))
a = 'student'
print(a)
print(type(a))
# 출력방식
print("number")
a, b, c = 1, 2, 3
print(a, b, c)
print("number : ", a, b, c)
# sep의 경우는 각각의 변수 사이에 넣은 값만큼 분리해준다
print(a, b, c, sep=', ')
print(a, b, c, sep=',')
print(a, b, c, sep='')
print(a, b, c, sep='\n')
'''
end의 경우, print함수는 항상 개행 되어지는데, 개행 대신에
다른 값을 넣어 개행 말고 다른 형태가 되도록 한다.
'''
print(a, end=' ')
print(b, end=' ')
print(c)
2. 변수입력과 연산자
'''
변수입력과 연산자
'''
a = input("숫자를 입력하세요 : ")
print(a)
# split 띄어 쓰기로 분리하여 입력 받게 한다
a, b = input("숫자를 입력하세요 : ").split()
print(a + b)
print(type(a))
c = a + b
# 둘다 문자형 string이라서 값이 나오지 않고 string끼리 붙는다
print(type(c))
print(c)
a, b = input("숫자를 입력하세요 : ").split()
a = int(a)
b = int(b)
print(a + b)
# 위 처럼 하나하나 int하기 힘들다, map을 사용해보자
# map을 int형으로 봐꿔준다 여기서 int는 내장함수
# map(mapping)
a, b = map(int, input("숫자를 입력하세요 : ").split())
print(a + b)
print(a - b)
print(a * b)
print(a / b)
# //는 몫을 의미
print(a // b)
# %는 나머지를 의미
print(a % b)
# **는 a의 b진수, b승을 의미
print(a**b)
a = 4.3
b = 5
c = a + b
print(c)
print(type(c))
Sec.02-1 K번째 약수
내가 쓴 답안
n, k = map(int, input().split(" "))
divisor = []
for i in range(1, n + 1):
if n % i == 0:
divisor.append(i)
if k <= len(divisor):
print(divisor[k - 1])
else:
print(-1)
문제 풀이 시간 5분 내외
강사님 답안
n, k = map(int, input().split(" "))
cnt = 0
for i in range(1, n + 1):
if n % i == 0:
cnt += 1
if cnt == k:
print(i)
break
else:
print(-1)
강사님 답안을 보고 새롭게 배운 것은 배열을 쓰지 않고, count 하여, 해당 약수의 몇 번째 인지 바로 구하게 한 것, 그리고 for문 안에서 break를 하지 않았으면 for문이 다 돌고 else 안에 들어간다는 것도 알았다.
백준 10872 팩토리얼
https://www.acmicpc.net/problem/10872
너무나 쉬운 문제였다. factorial의 경우 재귀 함수인데, nb가 0일 때까지 계속 else로 돌게 한다. 재귀적 관계를 보는 것이 중요한데, factorial의 경우는, 아래와 같이 지금의 숫자와 그 수보다 1 작은 수의 팩토리얼의 곱이다. 이것이 팩토리얼의 정의이다. 각각의 호출 관계를 집중하여 풀었다.
nb = int(input())
def factorial(nb):
if nb == 0:
return 1
else:
return nb * factorial(nb - 1)
print(factorial(nb))
문제 풀이 시간 1분 내외
'Today I Learned' 카테고리의 다른 글
[TIL] 백준 2750 [21-11-04] (0) | 2021.11.04 |
---|---|
[TIL] PS 강의 Sec.01-3~6 / 조건문 / 반복문 / 반복문을 이용한 문제 풀이 / 중첩반복문, 백준 10817 세 수, 백준 2455 지능형 기차 [21-11-03] (0) | 2021.11.03 |
[TIL] 백준 15552, 프로그래머스 12935 [21-11-01] (0) | 2021.11.01 |
[TIL] 백준 1110 [21-10-31] (0) | 2021.10.31 |
[TIL] 백준 1316, 프로그래머스 12917 [21-10-30] (0) | 2021.10.30 |