728x90
반응형
이번 포스팅은 www.acmicpc.net/problem/1065에서 푼 것을 토대로 작성했습니다.
함수의 마지막 문제인 한수입니다.
문제.
처음에는 한수라는 개념을 이해를 못해서 문제를 어떻게 풀어야 할지 몰랐습니다
이 문제에서 한수란
예를 들어 210은 2-1 == 1-0이라 한수입니다
또 110은 1-1 != 1-0이라 한수가 아닙니다.
자릿수의 차가 같을 때, 즉 등차수열 일 때 한수이며 이것을 출력하는 프로그램을 만들어야 합니다.
코딩 1.
n = int(input())
a=0
b=0
c=0
han = 99
if n < 100:
han = n
else :
for i in range(100, n+1):
a = i//100
b = i%100//10
c = i%10
if (a-b)==(b-c):
han += 1
print(han)
첫 번째 코딩 방법은 n <100일 때는 han, 한수를 n으로 두었고
100 이상일 때는 for문을 만들어 100부터 n+1까지 반복되도록 하여
각각 자릿수를 계산해서 비교하여 han += 1을 하도록 만들었습니다.
코딩 2.
n = int(input())
han = 99
if n < 100:
han = n
else:
for i in range(100, n+1):
a = list(map(int, str(i)))
if a[0]-a[1] == a[1]-a[2]:
han += 1
print(han)
두 번째 코딩 방법은
100 이하는 코딩 1의 방법과 동일하지만 100 이상의 수는 list를 이용하여
각 자릿수를 str로 분리하고 그것을 비교해서 han을 하나씩 올리도록 하였습니다.
처음께 list를 사용한 코드이며 4ms 차이 정도 나는 것을 볼 수 있습니다.
다음 포스팅으로 찾아오겠습니다 :0
728x90
반응형
'Python > 백준 알고리즘' 카테고리의 다른 글
[BaekJoon/Python] : 백준 11720번 - 숫자의 합 (0) | 2021.01.07 |
---|---|
[BaekJoon/Python] : 백준 11654번 - 아스키 코드 (0) | 2021.01.07 |
[BaekJoon/Python] : 백준 4673번 - 셀프 넘버 (0) | 2021.01.03 |
[BaekJoon/Python] : 백준 15596번 - 정수 N개의 합 (0) | 2021.01.03 |
[BaekJoon/Python] : 백준 4344번 - 평균은 넘겠지 (0) | 2021.01.02 |