문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/120887
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음 작성한 코드
- Range 함수를 이용해 i부터 j까지의 수를 for문을 이용해 차례로 변수 a에 대입
- Str 함수와 for 문을 이용해 변수 b에 각 자리 숫자를 슬라이싱 하여 대입
- Str 타입인 b를 다시 int 타입으로 바꾸어 주어 k와 같은지 확인
def solution(i, j, k):
answer = 0
for a in range(i, j+1):
for b in str(a):
if k == int(b):
answer += 1
return answer
# 입출력 예시
print(solution(1, 13, 1))
print(solution(10, 50, 5))
print(solution(3, 10, 2))
변수 b를 다시 정수로 바꾸어 주기보다는 k를 문자열로 바꾸는것이 좋을 수도 있겠다.
다른 코드
[코드1]
- Count 함수를 이용하여 i부터 j까지의 수 중 k가 몇번 들어있는지 문자열에서 개수를 센다.
def solution(i, j, k):
answer = 0
for n in range(i, j + 1):
answer += str(n).count(str(k))
return answer
처음 작성한 코드에서 for문과 if문을 깔끔하게 정리할 수 있는 방법이다.
[코드2]
- [코드1]의 내용을 리스트 컴프리헨션을 이용하여 줄인 방법이다.
def solution(i, j, k):
answer = sum([ str(i).count(str(k)) for i in range(i,j+1)])
return answer
변수 answer의 초기값을 설정하지 않아도 되겠지만, 개인적으로는 가독성이 떨어지는 코드라고 생각한다.
나의 생각
Count 함수를 조건문 대신 사용함으로 인해 코드가 깔끔해진다는 것을 배우고 가는 문제였다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Programmers][Python] 잘라서 배열로 저장하기 (0) | 2023.02.25 |
---|---|
[Programmers][Python] 진료순서 정하기 (0) | 2023.02.23 |
[Programmers][Python] 가까운 수 (0) | 2023.02.21 |
[Programmers][Python] 중복된 문자 제거 (0) | 2023.02.21 |
[Programmers][Python] 카드 뭉치 (0) | 2023.02.17 |