티스토리 뷰
#15596 정수 N개의 합
정수 N개가 들어있는 리스트를 입력값으로 받아 리스트 안의 정수의 합을 리턴하는 함수를 만드세요.
입력
정수가 들어있은 리스트
풀이
def solve(a):
result = 0
for i in a:
result += i
return(result)
간단간단하게 풀어주자.
#4673 셀프 넘버
양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다.
예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런 식으로 다음과 같은 수열을 만들 수 있다.
n을 d(n)의 생성자라고 한다. 위의 수열에서 33은 39의 생성자이고, 39는 51의 생성자, 51은 57의 생성자이다. 생성자가 한 개보다 많은 경우도 있다. 예를 들어, 101은 생성자가 2개(91과 100) 있다.
10000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
입력
입력값은 없다.
출력
1
3
5
7
9
20
31
...
...
...
9971
9982
9993
풀이
def d(n):
res = 0
for i in str(n):
res += int(i)
return res + n
res = []
for i in range(1,10000):
res.append(d(i))
if i not in res :
print(i)
설명이 어려워서 그렇지 그리 어렵지 않은 문제였다.... 사실 내가 헤맸다.....
가장 먼저 문제에서 언급한 함수를 생성한다.
나는 그냥 string형태로 하나씩 빼면서 그 값을 다시 int 로 바꿔주면서 더하는 형태로 만들었다.
1부터 10000까지의 숫자를 for문을 이용해 미리 생성해둔 함수에 넣는다.
그러면서 주어진 조건이 아닌 값을 리턴해야 하기 때문에 함수의 결과로 나오는 값을
임의의 리스트에 쌓아두면서 여기에 있는 값은 제외시키며 출력해주었다.
#1065 한수
어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다.
N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
입출력 예제
입력 | 출력 |
110 | 99 |
1 | 1 |
210 | 105 |
1000 | 144 |
풀이
num = 0
def is_hans(n):
n = list(map(int,list(str(n))))
global num
if n[1] - n[0] == n[2] - n[1]:
num += 1
cycle = int(input())
for i in range(1, cycle+1):
if i < 100 :
num += 1
else :
is_hans(i)
print(num)
문제가 이해가 안되서 더 헤맸다... 각 자리의 숫자가 등차수열을 이루면 한수인건 알겠는데,
일의 자리수나 십의 자리수는 어쩌란 말이냐.. 하면서 인터넷 검색을 해봤다.
별다른 결과는 못찾았고, 예제를 보니까 99까지의 숫자는 전부다 카운팅이 되는 것을 확인했다.
또한 문제의 조건에서 1000보다 작거나 같은 숫자만 입력값으로 사용한다고 했으니,
어차피 1000은 한수가 아니기 때문에 1 ~ 99 는 그냥 카운팅,
100 ~ 999 만 한수를 확인할 수 있도록 함수를 생성해서 글로벌 변수가 계속해서 카운팅이
될 수 있도록 했다!
함수는 그냥 1의자리 10의자리의 차, 10의자리 100의자리의 차가 일정한지 조건문을 걸고
True 일 때, global 변수가 누적해서 카운팅되도록 만들었다 !
'프로그래밍 > BOJ' 카테고리의 다른 글
백준: #단계별로 풀어보기, 문자열 (2) (0) | 2020.01.12 |
---|---|
백준: #단계별로 풀어보기, 문자열 (1) (0) | 2020.01.12 |
백준: #단계별로 풀어보기, 1차원 배열 (2) (0) | 2020.01.10 |
백준: #단계별로 풀어보기, 1차원 배열 (1) (0) | 2020.01.10 |
#단계별로 풀어보기 :while (0) | 2020.01.06 |
댓글