https://www.acmicpc.net/problem/1008
문제
A/B를 계산하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A,B < 10)
출력
첫째 줄에 A/B를 소수점 9자리 이상 출력한다. 절대/상대 오차는 10-9 까지 허용한다.
방법론.
A/B를 계산하는데 소숫점을 9자리이상 출력하고, 오차가 낮아야 한다. 당연히 그냥 /나 float같은 함수를 쓰게 되면 값이 적당히 나오고, 알고리즘 문제인만큼 이렇게 간단한게 나올리가 없다. 나누기를 구현하는 문제이다. 나누기를 구현하면 된다.
# -*- encoding: cp949 -*- from __future__ import print_function n,m = map(int,raw_input().split()) flag = True for i in xrange(100): if n < m: n *= 10 if flag: print('0.',end='') flag = False else: print('0',end='') print(int(n/m),end='') n %= m n *= 10
파이썬 2버전에서, 특히 2버전에서 print로 출력시 자동으로 개행(\n)이 붙게 된다. print '',처럼 끝에 ,를 붙임으로서 야매로 출력을 할 수 있지만 공백이 한칸 더 출력되게 된다. 이걸 방지하려면....
1. s = ''처럼 빈 문자열을 선언 후 출력해야될 곳에서 출력하지 말고 s += ~~처럼 문자열에 하나하나 더한 후 맨 끝에 출력한다.
2. s = []처럼 빈 리스트를 선언 후 s.append()등으로 추가한 후 맨 마지막에 ''.join(s)등으로 출력한다.
3. 위 소스에 쓴 방법인데 파이썬 3버전의 print함수를 가져와서 end=''처럼 print함수에 인자를 줘서 하는 방법 등이 있다.
4. import sys를 한 후 sys.stdout.write('출력할거') 마찬가지로 이렇게 출력하게 되면 뒤에 공백없이 출력이 된다.
5. print '\ba', 처럼 ,를 붙여서 출력하되 맨 앞에 \b가 있으면 이게 백스페이스이므로 맨 끝에 공백이 지운 상태로 출력된다고 한다.
print '111111111',
print '\b2222222'
또다른 방법이 있겠으나 이정도면 충분하다고 생각한다.
'algorithm > problem solving' 카테고리의 다른 글
acmicpc.net 1120 문자열(c++) (0) | 2016.07.01 |
---|---|
acmicpc.net 1037번 약수, 1076번 저항, 1100 하얀 칸 (0) | 2016.06.26 |
acmicpc.net 1032번 명령 프롬프트 (0) | 2016.06.15 |
acmicpc.net 1004번 어린 왕자 (0) | 2016.06.10 |
acmicpc.net 1009번 분산처리 (0) | 2016.06.10 |