코드시그널 아케이드 파이썬 18 번 풀이
인트로의 지옥을 벗어났구요.. 그래프를 풀려면, 자바같은 개가튼 언어는 별로 더라구요.
자 파이썬을 시작해보겠습니다. 조금 배워보니 왜 파이썬 파이썬 하는지 알겠더군요.
약간 자바보다는 안정감이 떨어지지만(?) 개인적으로
유연하고 간편하다? 라는 느낌을 받았습니다. 자 시작해볼까요!!
문제 해설
이 문제는 파라미터가 3개입니다. 무슨 대회에 나갔따고 하는데 그런 내용은 생략하고 정확히 무엇을 물어보는 문제인지 확인하겠습니다.
주어진 t라는 float소수점 자리의 수를 precision의 값에 맞춰서 소수점 자리를 설정해주고, 이것을 문자열로 width 길이 속에서 가운데에 위치하도록 해달라는 문제입니다.답을 보겠습니다.
해결
def competitiveEating(t, width, precision):
return format(t, ".%df" %precision).center(width, ' ')
여러가지 난항이 있었지만, 나름 방법을 찾아서 풀었습니다.
처음에는
str(round(a, precision)).center(width, ' ')
소수점 자리를 precision값에 맞춰서 반올림을 해준뒤, center함수를 통해서 Width 값에 ' ' 띄어쓰기 빈칸을 채워준다는 생각으로 코드를 작성했지만 문제가 있었습니다.
바로 4번케이스가 대표적인 경우였습니다.
4번 테스트를 보면, t값은 837.28472 입니다. 그러나 precision의 값이 7이여서 소수점 자리를 넘어갑니다.
이런 경우에는 답이 00을 더 붙여서 문자열로 만들어주고, Center함수로 가운데에 위치하도록 해야했습니다.
이러한 테스트는 제가 최초에 생각했던 단순한 round함수로는 불가능한 경우였습니다.
그 후 검색을 하기 시작하였지만, 힌트는 f'String이라는 것과, % 사용, format()함수사용 이 세가지가 힌트 인듯 하였습니다.
먼저 이 링크를 꼭 들어가보십시오.
어떤 느낌인지 확 옵니다.
%와 format함수에 대한 웹페이지
그리고 geeks 에서도 precision에 대한 정보는 이 세가지 방법으로 해결하라는 뉘앙스만 취할뿐, 활용방안에는 자세히 내용이 없었습니다.
힌트는, format(t, ".%f") 였습니다.
일단, 소수점 자리를 가진 수에 변환이 필요했지만, ".%f"를 사용하면 딱 6자리까지만 나오고 그 이상은 안나왔습니다.
말씀드린대로 테스트4번의 경우 precision이 7이기 때문에, 이 경우 만족하지를 않습니다.
그렇다면 format의 기준이 되는 ".%f"가 ".%7f"으로 바뀌어야 만족하지만, 설사 precision이 7이 아니라면 이것은 똑같은 상황에 빠집니다.
즉,
".%f" 에서 %와 f의 사이에 내가 원하는 변수값이 들어가게 하는것이었습니다.
% 표기법을 활용하여 넣어보았습니다.
".%df" %precision
format(t, ".%df" %precision).center(width, ' ' )
이렇게 Format함수를 통해 결과값이 나오고 따로 형변환이 필요없이, (바로 Str로 나옴) Center함수를 활용하여 테스트를 돌리니
COMPLETE!!
공감♥ 부탁드립니다.
'Algorithm > Python' 카테고리의 다른 글
#17_Code Signal Arcade Python :: Permutation Cipher (0) | 2020.09.21 |
---|---|
#16_Code Signal Arcade Python :: Is Word Palindrome (0) | 2020.09.20 |
#15_Code Signal Arcade Python :: Feedback Review (0) | 2020.09.19 |