728x90
문제 (출처 : <이것이 코딩 테스트다>)
제출한 답
class number:
def __init__(self):
self.N, self.K = None, None
self.N_MIN, N_MAX = 2, 100000
self.K_MIN, K_MAX = 2, 100000
def checkNumMinMax(self, value, value_min, value_max):
return value>=value_min and value<=value_max
def inputNK(self):
try:
n, k = map(int, input().split())
except:
print("입력 값 오류.")
return self.inputNK()
if n<k:
print("N은 K보다 크거나 같아야 합니다.")
return self.inputNK()
return n, k
def inputValue(self):
self.N, self.K = self.inputNK()
class calculate:
def __init__(self):
self.count = 0
self.num = None
def minus1(self, value):
return value-1
def division(self, value1, value2):
return value1//value2
def startCalculate(self):
n = self.num.N
while (n!=1):
self.count+=1
if n%self.num.K == 0: n = self.division(n, self.num.K)
else: n = self.minus1(n)
def run(self):
self.num = number(); self.num.inputValue()
self.startCalculate()
test = calculate()
test.run()
test.count
문제 풀이
🔆문제 요약
- input
- N : 어떠한 수 (2≤ N ≤ 100000)
- N은 항상 K보다 크거간 같음
- K : N을 나누기할 수 (2 ≤ K ≤ 100000)
- N : 어떠한 수 (2≤ N ≤ 100000)
- 문제 풀이
- N에서 1을 뺀다
- N을 K로 나눈다
- output
- N이 1이 될 때까지 1 or 2번을 시행하는 횟수
🔆문제 풀이
- input
- 자연수만 입력 받아야 하니 int(input())
- N과, K를 한줄에 입력받아야 하니 split
- try~except로 int로 변환 안 되는 값은 거르기
- N가 K의 min, max값 확인
- count 변수에 N을 처리하는 횟수 카운팅
- N//K는 나누어 떨어지는 경우에는 N//K, 아니면 N-1
🔆기능 사항
- number class
- N
- K
- N_MIN, N_MAX, K_MIN, K_MAX
- inputNK() : N과 K를 입력받는 함수, N과 K를 return 함
- map(int, input().split())
- try-except로 쌉가능
- 리스트 길이가 2개 맞는지도 확인
- 자연수가 맞는지도 확인
- try-except로 쌉가능
- checkNumMinMax(value) : value의 min, max가 올바르면 True return
- N이 K보다 크거나 같은 지 확인
- map(int, input().split())
- inputValue() : 숫자를 입력받을 함수
- calculate class
- count : 실행 횟수
- num : N, K 클래스
- minus1(value) : value를 -1해서 return
- divisionNK(N, K) : N을 K로 나누어 return
- startCalculate() : 계산 시작
- 현재 N을 K로 나눌 수 있는지 파악
- 실행 횟수 +1
- run() : 메인함수
- number 클래스를 통해 N, K를 입력받음
'python > 23년도 겨울 방학 코딩 스터디' 카테고리의 다른 글
[이코테] part 3_3주차_p.323 문자열 압축 (3) (1) | 2023.02.01 |
---|---|
[이코테] part 3_3주차_p.322 문자열 재정렬 (2) (0) | 2023.02.01 |
[이코테] part 3_3주차_p.321 럭키 스트레이트 (1) (0) | 2023.02.01 |
[이코테] part 2_2주차_p.201 떡볶이 떡 만들기 (0) | 2023.02.01 |
[이코테] part 2_1주차_p.182 두 배열의 원소 교체 (0) | 2023.01.17 |