이거 참고로 노션에는 기록을 못한다... 차마 기록할 페이지를 어디다 만들어야 할 지 모르겠음... ㅋㅋㅋㅋㅋ
문방구 오락기에서 게임하다가 엄마한테 등짝맞던 시절... 아니 그니까 초딩때를 이야기하는거다. 아무튼, 우리가 나눗셈을 처음 배웠을 때 6 나누기 4는 몫이 1이고 나머지가 2라 1 ... 2 이런 식으로 표현했다. 근데 콤퓨타는 기본적으로 몫과 나머지따원 모르겠고 난 소수점으로 쫑낼것이다! 모드란 말이죠.
그니까 응애 애기피츄 책사죠 하던 시절의 그 나눗셈을 해보자 이겁니다. 뭘로? 파이썬으로. 왜 피츄인지는 내 닉네임을 보면 납득할 수 있을것이다. 본인이 라이츄기 때문에 유년기가 피츄인거다.
일단 나눗셈의 용어에 대해 알고 가도록 하자. 나눗셈 하면 피제수와 제수라는 두 개의 용어가 있는데(몫과 나머지도 있지만), 피제수는 나눠지는 수, 제수는 나누는 수이다. 6 나누기 3에서 6은 피제수, 3은 제수다.
전에 백준 풀이에서 부정과 불능에 대해 얘기하면서 0 나누기 0을 하게 되면 0을 빼고빼고빼고빼고빼고빼고...빼고 해야돼서 안 끝난다고 했는데, 그렇다. 피제수에서 제수를 겁나 빼는게 나눗셈이다. 30 나누기 5 하면 30에서 5를 여섯 번 빼면 된다. 언제까지? 0 될때까지. 나머지가 있다면 언제까지? 0보다 크고 제수보다 작을때까지.
import sys
X = int(sys.stdin.readline()) # 피제수
Y = int(sys.stdin.readline()) # 제수
cnt = 0
while X >= Y:
X -= Y
cnt += 1
print(cnt, X)
여기서 cnt는 몫이고, X는 피제수(였던것)가 된다. 왜 였던것이냐면 피제수가 제수보다 클때까지 빼고빼고빼고빼고...빼서 제수보다 작아지면 while문을 빠져나오기 때문.
import sys
X = int(sys.stdin.readline()) # 피제수
Y = int(sys.stdin.readline()) # 제수
cnt = 0
while X >= Y:
X -= Y
cnt += 1
print('{} ... {}'.format(cnt,X))
이렇게 하면 몫 ... 나머지로 출력되는데 아직 한가지 더 남았다. 나머지가 0이면?
import sys
X = int(sys.stdin.readline()) # 피제수
Y = int(sys.stdin.readline()) # 제수
cnt = 0
while X >= Y:
X -= Y
cnt += 1
if X == 0:
print('{}'.format(cnt))
else:
print('{} ... {}'.format(cnt,X))
아니 이게 클때로 조건을 걸어두니까 피제수에서 제수 뺄 수 있는데 걍 나머지로 짬때리더라고... 그래서 등호 추가했다. 이러면 피제수와 제수가 같아질때 한번 더 빼고 나머지가 0이 된다. 아무튼... 이렇게 if문을 추가하면 나머지가 없을때는 몫만, 나머지가 있을때는 몫 ... 나머지로 출력해준다.
import sys
X = int(sys.stdin.readline()) # 피제수
Y = int(sys.stdin.readline()) # 제수
cnt = 0
while True:
if X < Y:
break
X -= Y
cnt += 1
if X == 0:
print('{}'.format(cnt))
else:
print('{} ... {}'.format(cnt,X))
이건 While True 버전. While True는 위의 while문에 있던 조건문이 if+break 2+1 패키지로 들어간다.
일단 for문은 여기서부터 여기까지 해라지 조건부 반복문이 아니기때문에 while만 해봤는데, 이거 굳이 반복문 써야 하나요? 아뇨, 더 간소화 할 수 있는 방법이 있습니다.
import sys
X = int(sys.stdin.readline()) # 피제수
Y = int(sys.stdin.readline()) # 제수
if X % Y != 0:
print('{} ... {}'.format(X // Y, X % Y))
else:
print(X // Y)
X // Y는 몫(int(X/Y)와 같음), X % Y는 나머지다. 그러니까 X를 Y로 나눈 나머지가 0이 아니면 몫 ... 나머지로, X를 Y로 나눈 나머지가 0이면 몫만 출력하면 된다. ㅇㅋ?
'Coding > Python' 카테고리의 다른 글
현재 시각을 십이지시로 바꿔보자 (0) | 2024.01.10 |
---|---|
파이썬으로 만나이를 계산해보자 (0) | 2024.01.09 |
Python으로 연결 리스트 구현하기 (0) | 2023.09.05 |
enumerate에 대해 알아보자 (0) | 2023.08.05 |
zip이란 무엇인가 (0) | 2023.08.04 |