728x90
반응형
SMALL
Programmers 레벨 0_코딩 기초 트레이닝 문제 풀이
https://school.programmers.co.kr/learn/challenges/training?order=recent
코딩 기초 트레이닝 | 프로그래머스 스쿨
프로그래밍 언어를 처음 접하거나 프로그래밍 언어에 익숙해지고 싶다면? 코딩 역량을 탄탄하게 길러주는 코딩 기초 트레이닝으로 차근차근 코딩에 대한 기초 감각을 길러 보세요.
school.programmers.co.kr
풀이 날짜 : 2023-09-13
문제 설명
정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.
문제를 봤을 때, 먼저 정수 l과 r 사이의 값을 구하고, 그 다음에 그 안에서 숫자 0과 5로만 이루어진 정수를 구해야 겠다고 판단했다.
나의 풀이
def solution(l, r):
answer = []
for i in range(l, r+1) :
if '1' not in str(i) and '2' not in str(i) and '3' not in str(i) and '4' not in str(i) and '6' not in str(i) and '7' not in str(i) and '8' not in str(i) and '9' not in str(i) :
answer.append(i)
return [-1] if not answer else answer
1. 먼저 빈 리스트 answer를 만든다.
2. l과 r 사이의 범위를 출력하기 위해 for문에서 범위 값을 range(l, r+1)로 주었다. -> i에 차례대로 l~r값이 들어간다.
3. i에 0과 5를 제외한 숫자가 없을 경우, 즉 0이나 5만 있을 경우를 출력한다.
- A not in B 형태로 사용했는데, A에는 리스트 등은 안 되며 값이 하나만 와야 하고, B에는 리스트나 튜플, 세트 등의 값도 올 수 있다.
4. 만약 조건에 충족되면 리스트 answer에 값을 넣는다.
5. answer값에 아무 것도 없으면 [-1]을 출력, 값이 있으면 그 리스트를 그대로 출력한다.
다른 풀이
def solution(l, r):
answer = []
for i in range(l, r + 1):
if not set(str(i)) - set(['0', '5']):
answer.append(i)
return answer if answer else [-1]
set의 교집합을 이용해서 풀었다.
다른 풀이 2
def solution(l, r):
answer = list(filter(lambda x: l<=x and x<=r, [int(bin(i)[2:])*5 for i in range(100)]))
return answer if any(answer) else [-1]
함수를 이용해서 풀었다.
1. lambda식
2. bin 함수 : 숫자를 2진수로 바꾸는 함수
3. filter 함수 : 특정한 조건을 추려낼 때 이용
728x90
반응형
LIST
'Coding Study > Programmers (Python)' 카테고리의 다른 글
[프로그래머스/파이썬] Lv.0 주사위 게임 3 (0) | 2023.09.13 |
---|---|
[프로그래머스/파이썬] Lv.0 간단한 논리 연산 (0) | 2023.09.13 |
[프로그래머스/파이썬] Lv.0 배열 만들기 4 (0) | 2023.09.13 |
[프로그래머스/파이썬] Lv.0 콜라츠 수열 만들기 (0) | 2023.09.13 |
[프로그래머스/파이썬] Lv.0 카운트 업 (0) | 2023.09.13 |