| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
| 31 |
- 구현
- Summer/Winter Coding(~2018)
- Python
- GIT
- Java
- dfs
- 1932
- 그래프
- 자바
- 토마토
- Lv2
- 그래프탐색
- BFS
- 알고리즘고득점Kit
- 완전탐색
- DP
- 프로그래머스
- 프로그래멋
- 정수 삼각형
- 조합
- 분할정복
- 깃허브
- 월간 코드 챌린지 시즌1
- 정렬
- 이코테
- 알고리즘
- 백준
- 다익스트라
- 깃허브 프로필
- 15686
- Today
- Total
갱스터하우스
[Python] Lv1.문자열 내 p와 y의 개수 본문
https://programmers.co.kr/learn/courses/30/lessons/12916
코딩테스트 연습 - 문자열 내 p와 y의 개수
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를
programmers.co.kr
문제 설명
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
제한 조건
- 문자열 s의 길이 : 50 이하의 자연수
- 문자열 s는 알파벳으로만 이루어져 있습니다.
나의 접근방법 및 풀이
| 결과 | |
| 'p'의 개수 == 'y'의 개수 | True |
| 'p'의 개수 != 'y'개수 | False |
| 'p', 'y'없을 때 | True |
소문자와 대문자를 구별하지 않아서 처음에는 if i == 'p' or i == 'P'로 했지만, 저번에 문자열 조건에서 in을 써서 풀이한 게 생각나서 한 번 적용해봤다.
p의 개수 y의 개수를 따로 받아야 하나 고민했는데, 변수 하나만을 설정하여 p일 경우는 +1, y일 경우는 -1을 해서
만약 둘의 개수가 같을 경우와 한 번도 등장하지 않은 경우에는 0이고 그 외의 경우에는(음수이거나 양수일때) 개수가 같지 않다는 것으로 설정하여 True와 False를 return 하였다.
def solution(s):
count = 0
for i in s:
if i in ['p','P']:
count += 1
elif i in ['y','Y']:
count -= 1
if count == 0: ## p,y의 개수가 같거나 없으면 count는 0
return True
else:
return False
다른 풀이
def numPY(s):
# 함수를 완성하세요
return s.lower().count('p') == s.lower().count('y')
(1) 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
→ 구별하지 않는 다는 것을 문자열을 전부 소문자로 바꿔 굳이 소문자인 경우 대문자인 경우를 나누지 않아도 된다.
(2) count를 이용하여 해당 문자가 몇 개인지를 구한다. 굳이 다른 변수를 사용하지 않아도 된다.
(3) 그리고 if문을 사용하지 않고 바로 True와 False를 판단한다.
: 문자열의 개수가 같으면 True이고, 다르면 False 그리고 둘 다 한 번도 나오지 않다면 똑같이 count가 0이니까 True
한 줄로 이렇게 판단하는게 정말 명쾌했다.
문제에서 주어지는 조건을 더 간편하게 어떻게 구현할 수 있는지도 생각해봐야겠다.
'코테 문제 > 프로그래머스' 카테고리의 다른 글
| [Python] Lv1.가운데 글자 가져오기 (0) | 2022.04.08 |
|---|---|
| [Python] Lv1.나누어 떨어지는 숫자 배열 (0) | 2022.04.08 |
| [Python] Lv1.x만큼 간격이 있는 n개의 숫자 (0) | 2022.04.08 |
| [Python] Lv1.문자열 다루기 기본 (0) | 2022.04.08 |
| [Python] Lv1.핸드폰 번호 가리기 (0) | 2022.04.08 |