Notice
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- abex crackme
- 웹해킹
- 리눅스
- 웹
- MySQL
- 백준 알고리즘
- 어셈블리어
- 컴퓨터 구조
- 회귀 수식
- CodeEngn
- php
- 리버싱 문제
- 리액트
- webhacking.kr
- writeup
- 해킹
- 자바스크립트
- 리버싱 워게임
- C언어
- html
- 넘파이
- webhacking
- sql injection
- 백준
- 알고리즘
- 보안
- 리버싱
- 워게임
- 머신러닝
- 인공지능
Archives
- Today
- Total
인공지능 개발일지
[백준 알고리즘 1065] 한수 구하기 (Python) 본문
728x90
문제
문제는 입력받은 수보다 작은 한수를 출력하는 것이다. 한 수는 각각의 자릿수가 등차수열을 이루는 수로 3번째 자리부터 이에 해당한다. 왜냐하면 최소 세 개의 자리가 있어야 차가 동일(등차)한 지 확인할 수 있기 때문이다.
그래서 1~99까지는 무조건 한수이고 이후 100~999까지 한 수를 구하는게 목표다.
풀이
그래서 반복문 1개를 통해 우선 1000이하인 한수의 리스트를 구하고 다음 반복문에서 입력받은 수 보다 작은 한수를 출력했다. 근데 다른 코드를 보니까 미리 한수 리스트를 안 구하고 수를 입력받은 뒤 바로 그 수보다 작은 수에 대해 반복문을 돌리면서 한수를 구한 뒤 그 개수를 출력했다. 그래서 미리 리스트를 구하는 것은 지난 self number처럼 모수의 리스트가 많은 경우에만 사용하는게 좋을 듯하다.
코드
# -*- coding: utf-8 -*-
# 전체 숫자 집합 생성
all_num=list(range(100,1000))
one_num=list(range(100))
result_num=[]
# 한 수를 구하고
for num in all_num:
num=str(num)
if int(num[2])-int(num[1])==int(num[1])-int(num[0]):
one_num.append(int(num))
a=int(input()) # 값을 입력 받아서
for i in range(1,len(one_num)): # 한 수를 반복문 돌면서 a 이하의 한수 저장
if a>=one_num[i]:
result_num.append(one_num[i])
print(len(result_num))
728x90
'개발 지식 > 알고리즘' 카테고리의 다른 글
백준 2292 벌집 C++ (0) | 2022.07.26 |
---|---|
[백준 알고리즘 1712] 손익분기점 (Python) (0) | 2022.05.29 |
[백준 알고리즘 4673] 셀프 넘버 (Python) (0) | 2022.05.26 |
[BOJ / 그리디] 1931번 회의실 배정 C++ 풀이(+sort/pair사용법) (0) | 2022.02.08 |
[BOJ / 백준] 2798번 블랙잭 C++ 풀이 (0) | 2022.01.31 |