입력:
연, 월, 일이 ".(닷)"으로 구분되어 입력된다.
출력:
입력받은 연, 월, 일을 yyyy.mm.dd 형식으로 출력한다.
(%02d를 사용하면 2칸을 사용해 출력하는데, 한 자리 수인 경우 앞에 0을 붙여 출력한다.)
내 코드:
a, b, c = input().split('.')
def ex1(a):
x = int(a)
if x < 1000:
return str(x).zfill(4)
else:
return x
def ex2(b):
y = int(b)
if y < 10:
return str(y).zfill(2)
else:
return y
print(ex1(a), ex2(b), ex2(c), sep='.')
또 다른 풀이:
a,b,c=input().split('.')
print('%04d' % int(a), end='.')
print('%02d' % int(b), end='.')
print('%02d' % int(c))
Comment: 입력한 년, 월, 일 날짜를 그대로 출력하는 문제입니다. 핵심은 원래라면 텅 비어있어야 할 앞자리에 0을 집어넣는 것입니다. 제가 찾은 방법은 zfill을 이용하는 것이었고, 더 간단한 방법으로는 "'%0Nd' % 출력할 숫자"가 있습니다. 여기서 N은 출력 시 표시할 자릿수를 의미합니다.
zfill은 괄호 안에 출력 시 표시할 자릿수를 지정하고(ex. zfill(2), 위의 N과 같습니다.) 그 자릿수가 채워지지 않을 경우 0을 붙여 반환합니다.
예를 보겠습니다.
'2'.zfill(2) # 십의 자리까지 표시해 출력
>> '02'
'999'.zfill(4) # 천의 자리까지 표시해 출력
>> '0999'
주의할 점은, zfill은 자릿수를 지정하는 대상이 문자열(str)일 때만 작동하며, 정수형(int)일 경우 Attribute error가 납니다.
그럼 '%0Nd'를 사용할 때의 예제를 보겠습니다.
n=2
print('%02d' % n) # 십의 자리까지 표시해 출력
>> 02
n=999
print('%04d' % n) # 천의 자리까지 표시해 출력
>> 0999
위의 방법보다 훨씬 간결하게 표현할 수 있습니다. 여기서 주의할 점은, 이 방법의 경우 위의 zfill과 반대로 자릿수를 지정하는 대상 혹은 변수가 정수형(int)인 경우에만 쓸 수 있다는 점입니다. 문자열일 경우 Type error가 발생합니다.
'Algorithm > CodeUp' 카테고리의 다른 글
[CodeUp 기초 100제]1022 : [기초-입출력] 문장 1개 입력받아 그대로 출력하기(풀이 성공) (0) | 2020.10.20 |
---|---|
[CodeUp 기초 100제]1020 : [기초-입출력] 주민번호 입력받아 형태 바꿔 출력하기(풀이 성공) (0) | 2020.10.20 |
[CodeUp 기초 100제]1018 : [기초-입출력] 시간 입력받아 그대로 출력하기(풀이 성공) (0) | 2020.10.17 |
[CodeUp 기초 100제]1017 : [기초-입출력] 정수 1개 입력받아 3번 출력하기(풀이 성공) (0) | 2020.10.16 |
[CodeUp 100제]1015 : [기초-입출력] 실수 입력받아 둘째 자리까지 출력하기(풀이 성공) (0) | 2020.10.15 |